如题,应届生除了要很好的掌握算法和数据结构外,下面罗列的技能点希望对大家有所帮助。有兴趣的朋友可以参考这篇,有针对性地进行补漏。文中列出的技能点,有的需要熟悉,有的只需要了解即可。注意技能点前面的修饰符。如果没有明确给出“熟悉”、“理解”等词,则要求是熟悉。1、操作系统方面,多线程和线程间同步技术熟练使用(但不限于)以下linuxAPIlinux下的线程创建、等待、线程id获取intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg);2intpthread_join(pthread_tthread,void**retval);3pthread_tpthread_self(void);普通线程间的同步技术(什么时候用那个技术)mutual体1intpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*mutexattr);2intpthread_mutex_destroy(pthread_mutex_t*mutex);3intpthread_mutex_lock(pthread_mutex_t*mutex);4intpthread_mutex_trylock(pthread_mutex_t*mutex);5intpthread_mutex_unlock(pthread_mutex_t*mutex);信号量1intsem_init(sem_t*sem,intpshared,unsignedintvalue);2intsem_destroy(sem_t*sem);3intsem_wait(sem_t*sem);4intsem_post(sem_t*sem);5intsem_getvalue(sem_t*sem,int*valp);条件变量1intpthread_cond_init(pthread_cond_t*restrictcond,constpthread_condattr_t*restrictattr);2intpthread_cond_destroy(pthread_cond_t*cond);3intpthread_cond_signal(pthread_condd_t*cond);4intpthread_cond_broadcast(pthread_cond_t*cond);5intpthread_cond_wait(pthread_cond_t*restrictcond,pthread_mutex_t*restrictmutex);6intpthread_cond_timedwait(pthread_cond_t*restrictcond,pthread_mutex_t*restrictmutex,conststructtimespec*restrictabstime);读写/自旋锁1intpthread_rwlock_init(pthread_rwlock_t*restrictrwlock,constpthread_rwlockattr_t*restrictattr);2intpthread_rwlock_destroy(pthread_rwlock_t*rwlock);3intpthread_rwlock_rdlock(pthread_rwlock_t*rwlock);4intpthread_rwlock_tryrdlock(pthread_rwlock_t*rwlock);5intpthread_rwlock_wrlock(pthread_rwlock_t*rwlock);6intpthread_rwlock_trywrlock(pthread_rwlock_t*rwlock);7intpthread_rwlock_unlock(pthread_rwlock_t*rwlock);//这两个函数在Linux和Mac的man文档里都没有,新版的pthread.h里面也没有,旧版的能找到9intpthread_rwlock_timedrdlock_np(pthread_rwlock_t*rwlock,conststructtimespec*deltatime);10intpthread_rwlock_timedwrlock_np(pthread_rwlock_t*rwlock,const结构时间规范*deltatime);11intpthread_spin_init(__pthread_spinlock_t*__lock,int__pshared);12intpthread_spin_destroy(__pthread_spinlock_t*__lock);13intpthread_spin_trylock(__pthread_spinlock_t*__lock);14intpthread_spin_unlock(__pthread_spinlock_t*__lock);15intpthread_spin_pinlock(__);熟悉守护进程的创建及原理,了解crontab,熟悉进程、线程状态查看命令(top、strace、pstack),熟悉内存状态查看命令memstat、free,熟悉IO状态查看命令iostat、df、du,了解Linux文件权限、用户、时间(ctime、mtime、atime)、inode等基本文件属性,熟悉chmod、chown、chgrp等基本命令,熟悉文件传输命令scp、rz、sz命令,熟悉文件定位命令find、whereis命令。熟悉软链接和ln命令。熟悉lsof命令。2、网络熟悉tcp状态机(三次握手,四次挥手)。熟悉tcpdump命令。熟悉网络状态和防火墙状态查看指令:netstat、ifconfig、iptables熟悉socketAPI,包含但不限于(connect、accept、bind、listen、send/sendto、recv/recvfrom、select、gethostbyname)1intconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);2intaccept(intsockfd,structsockaddr*addr,socklen_t*addrlen);3intbind(intsocket,conststructsockaddr*address,socklen_taddrlen);4intlisten(intsockfd,intbacklog);5ssize_tsend(intsockfd,constvoid*buf,size_tlen,intflags);6ssize_tsendto(intsockfd,constvoid*buf,size_tlen,intflags,conststructsockaddr*dest_addr,socklen_taddrlen);7ssize_trecv(intsockfd,void*buf,size_tlen,intflags);8ssize_trecvfrom(intsockfd,void*buf,size_tlen,intflags,structsockaddr*src_addr,socklen_t*addrlen);9intselect(intnfds,fd_set*readfds,fd_set*writefds,10fd_set*exceptfds,structtimeval*timeout);11voidFD_CLR(intfd,fd_set*set);12intFD_ISSET(intfd,fd_set*set);13voidFD_SET(intfd,fd_set*set);14voidFD_ZERO(fd_set*set);15structhostent*gethostbyname(constchar*name);熟悉epoll,熟悉电平触发和边沿触发1intepoll_create(intsize);2intepoll_ctl(intepfd,intop,intfd,structepoll_event*event);3intepoll_wait(intepfd,structepoll_event*events,intmaxevents,int超时);熟悉blockingsocket和non-blockingsocket在connect,send,recv等行为上的区别,如何设置socket为非阻塞。3、脚本工具了解shell的基本语法、变量操作、函数、循环/条件判断等程序结构。熟练使用文本编辑工具vi/vim。了解如何使用文本处理命令grep、sed和cut。了解awk命令。四、数据库熟悉数据表结构设计(三种范式,字段属性)。了解查询优化(索引概念和创建、sql优化)。熟悉mysql常用API函数:1mysql_real_connect2mysql_select_db3mysql_query4mysql_store_result5mysql_free_result6mysql_num_rows7mysql_close8mysql_errno5.编程语言C/C++熟悉内存分布(堆、栈、静态/全局/局部变量、虚拟指针...)熟悉Makefile。熟悉gdb调试(断点、查看内存、执行轨迹、了解CPU主寄存器的作用……)。熟悉性能分析工具(gprof)。熟悉C-Runtime常用函数(如字符串格式化函数printf、scanf、字符串比较和连接函数、内存分配函数、文件和目录操作函数等)。熟悉stl库。熟悉OO思维和常用设计模式(如单例模式、工厂设计模式、装饰者模式、Builder模式、生产者消费者模式、策略模式等)。熟悉RAII和pimpl习语。具有一定的代码质量和重构能力。保留文章版权。转载请保留版权信息和文末的公众号信息。欢迎关注公众号『easyserverdev』。如果您需要我帮助解决任何技术或专业问题,可以通过这个公众号联系我。本公众号不仅分享高性能服务器开发经验和故事,还免费为技术朋友们提供技术解答和解答。有什么问题可以直接在微信上留言公众号,我会第一时间回复你。
