Workflow
被金山的薪资打动了

好的,我将按照您的要求,以资深研究分析师的身份对提供的公众号文章进行总结。文章内容主要涉及金山办公的校招信息和相关的技术面试题,以下是我的总结: 金山办公校招信息 - 金山办公的校招流程通常在国庆节后启动,约面到发放录用offer的周期约为2-3周,谈薪环节在10月底进行[3] - 公司为开发岗位提供的薪资范围大致在18k-22k之间,例如有案例显示武汉地区的offer为18k[5] - 公司在北京、珠海、武汉设有研发中心,为二线城市求职者提供了获得较高薪资的机会,工作制度为965,工作节奏相对舒适[5] - 主要的招聘开发岗位包括C++开发、服务端开发和前端开发,其中C++和服务端开发岗位较为注重计算机基础的考察[6] - 具体的在招职位显示,服务端开发、C++开发及前端开发工程师岗位在北京、广州、武汉、珠海等地均有全职职位开放[7] 服务端开发面试技术要点 - 面试重点考察计算机网络和操作系统知识,其次是Redis和MySQL原理,最后包含算法题[7] 网络模型 - OSI七层模型包含应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,每一层承担不同的职能[11][13] - TCP/IP四层模型是更实用的实现方案,分为应用层、传输层、网络层和网络接口层,Linux系统按此模型实现网络协议栈[14][15] 网站访问过程 - 访问网站的过程包括解析URL、判断各级缓存、进行DNS解析以获取IP地址、以及通过ARP协议获取MAC地址[20][21] TCP连接管理 - TCP通过三次握手建立连接,第三次握手可以携带数据,而前两次不行[22][26][27][28][30] - 断开连接需要通过四次挥手,这是因为被动关闭方在收到FIN报文后,可能需要等待应用程序处理完剩余数据才能发送自己的FIN报文[33][34] 网络问题处理 - 系统中出现大量TIME_WAIT连接的可能场景包括HTTP未使用长连接、HTTP长连接超时、以及HTTP长连接的请求数量达到上限(例如nginx的keepalive_requests参数默认值为100)[36][38][45][49][50] - 应对SYN泛洪攻击的方法包括调大netdev_max_backlog参数、增大TCP半连接队列、开启tcp_syncookies功能,以及减少SYN+ACK重传次数(默认5次)[54][55][56][60][61] 数据库与缓存 - Redis布隆过滤器使用位图数组和多个哈希函数来标记数据是否存在,具有高效查找的特点但可能存在误判[61][63][64][67] - 保证Redis与数据库数据最终一致性的策略包括旁路缓存读取、更新数据库后删除缓存,以及通过消息队列重试机制或订阅MySQL binlog(例如使用Canal中间件)来处理删除缓存失败的情况[68][71][77][79] - MySQL InnoDB选择B+树而非B树作为索引结构,原因在于B+树非叶子节点仅存储索引能容纳更多键值、存在冗余节点使得增删效率更高,且叶子节点通过链表连接有利于范围查询[93][96] 系统I/O与分布式理论 - 网络I/O模型包括阻塞I/O、非阻塞I/O、I/O复用(如select、poll、epoll)、信号驱动I/O和异步I/O,其中epoll通过红黑树和事件驱动机制高效处理大量连接,适用于C10K问题[82][85][89][90][92] - CAP定理指出分布式系统中一致性、可用性和分区容错性不可兼得[96][98]