服务器编程自问Creek2016.10.13系统层:1操作系统的基本概念学了多少?忘了多少?(进程概念、进程调度、同步、通信,线程概念,处理机调度等。这些东西会了可能感觉没什么用,不会却很容易招鄙视,这就是所谓的常识。)2文件描述符是什么玩意?会影响什么?3Shell以及shell脚本知道多少?(之前见过一个大的shell脚本,做一个很复杂的自动化操作流程,是我们没有那样的需求没用强大的shell,还是自己不了解shell想不到用其解决呢?)4linux常用命令(百度上的全有,不靠百度信手拈来的有多少?)5linux服务器环境搭建流程?去哪下包?安装依赖的解决等;6常用的网络安全的配置以及手段;7库的安装和使用,以及如何获取这些库;8vim编辑环境的搭建以及常用的命令;网络层:1Tcp、http、udp协议的内容以及常用的成熟的实现库;2select/epollIO多路转接,epoll的使用、优点和实现是什么?(感觉这个很重要)3网络抓包和分析工具的使用;4keepalive、session、cookie等基本网络概念知道多少?5基本常用的socket函数及选项有哪些?语言层:1C++、golang语言特性,为什么用并发?怎么用并发?golang如何实现的并发?2相关的编译工具,cmake和makefile,cmake的基本用法?3基本的调试工具和使用,gdb;4面向对象的思想了解多少?自己的设计数据结构的时候遵循了吗?5什么是模板?项目是怎么用的模板?6常用的设计模式,项目中只用到单例了吗?7编程规范(需要统一的约束),代码效率以及优化(方法太多了,《深入理解计算机系统》有一章专门说这个的);框架层:1gs、login、online框架什么样?,主要是消息的从接收到处理,当初设计者为什么如此设计?2dbproxy的框架,libuv库怎么用?3dbflush机制,golang的主流编程框架?模块层:1网络处理:souce/network下,session、handle、frame、module等,消息的接收处理,链接的保存和控制,各种连接不释放的问题导致的各种宕机都在这;2数据处理:状态机以及相关有哪些?3数据存储:protobuf的反射机制是什么?项目怎么实现的?(这个很重要,我觉得)4逻辑处理:pvp,rank等,待开发的逻辑(按任务分:登录、关卡、奖励、战斗、剧情、任务、充值等),什么是好的设计?数据的一致存储、处理大量的并发请求,还有哪些呢?如何取舍?数据库工具:1Redis;(分片、集群)2Mysql;(引擎、索引、锁机制)