Workflow
Redis
icon
搜索文档
被金山的薪资打动了
猿大侠· 2025-09-30 12:15
好的,我将按照您的要求,以资深研究分析师的身份对提供的公众号文章进行总结。文章内容主要涉及金山办公的校招信息和相关的技术面试题,以下是我的总结: 金山办公校招信息 - 金山办公的校招流程通常在国庆节后启动,约面到发放录用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]
字节跳动偏爱高校 TOP 榜
猿大侠· 2025-09-18 12:15
字节跳动招聘偏好分析 - 字节跳动对学历要求相对灵活,存在双非一本甚至二本背景毕业生成功入职的案例 [2] - 公司对高校毕业生有偏好名单,分为四档,第一档以985高校为主,但西电和北邮两所211高校也因行业高认可度位列其中 [4] - 名单中包含多所双非院校,如广东工业大学、杭州电子科技大学等,这些学校在计算机、电子领域实力强劲,属于行业内认可度高的强一本 [4] - 硕士院校为211及以上学历的候选人,即使本科背景普通,字节跳动大多愿意给面试机会,不会单纯因本科学历卡简历 [5] - 2024年秋招流程效率极高,从笔试到3轮技术面再到HR面,部分候选人不到3周即可完成并收到offer [6] 秋招技术面试趋势 - 当前秋招高峰期,考生普遍使用AI面试工具进行高强度模拟练习,单次练习时长在30分钟至80分钟不等 [8] - AI面试工具因考察方向完全对标大厂难度,能帮助考生查漏补缺并消除紧张感,受到广泛使用 [10][11] - 字节跳动秋招Java一面典型考察范围包括Java并发、Redis、MySQL事务三大模块,风格为重基础、挖原理 [11] Java并发编程核心技术 - 线程安全指多线程并发访问下程序仍能正确运行,主要通过加锁、原子类或并发安全数据结构来保证原子性、可见性和有序性 [12][16] - 保证线程安全的具体手段包括synchronized关键字、ReentrantLock显式锁、AtomicInteger等原子类以及ConcurrentHashMap等并发集合 [16][18][19][23] - 线程池核心目的是复用线程、降低开销、控制并发数,通过ThreadPoolExecutor的七大参数进行配置 [21][26][27] - 线程池拒绝策略包括CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy四种预置策略 [28][31] Redis高性能与数据结构 - Redis采用单线程模型,官方基准测试显示其吞吐量可达10万次/秒,高性能源于内存操作、高效数据结构、避免线程竞争及I/O多路复用机制 [29][36] - Zset类型底层由压缩列表或跳表实现,当元素个数小于128个且每个元素值小于64字节时使用压缩列表,否则使用跳表 [32][36] - 跳表通过构建多层有序链表实现快速定位,查找复杂度为O(logN),节点层数由随机数决定,每增加一层概率不超过25%,层高最大限制为64 [33][37][44][45] - 内存达到maxmemory上限后,Redis根据淘汰策略处理写请求,提供包括noeviction、allkeys-lru、volatile-ttl等8种策略 [46][48] 数据库与缓存一致性解决方案 - 保证Redis与MySQL数据一致性的常见策略是更新数据库后删除缓存,属于最终一致性方案 [52][54] - 针对删除缓存异常的情况,可通过消息队列重试机制或订阅MySQL binlog(如使用Canal中间件)两种方案来保证操作执行 [56][60][61][63] - 先写数据库再删缓存期间出现缓存击穿时,可采用分布式单飞方案确保同一key只有一个请求回源重建,或使用逻辑过期+后台刷新方案让并发请求短窗内返回旧值 [67][68][70][72] - 缓存需设置合理的过期时间,太短会使请求过多落库,太长则会导致脏数据长时间存在浪费内存 [54][55] MySQL事务特性与实现机制 - 事务ACID特性通过不同技术保证:原子性由undo log实现,隔离性由MVCC或锁机制实现,持久性由redo log实现,一致性则由前三者共同保证 [74] - MVCC在读提交和可重复读隔离级别下的区别在于Read View创建时机不同,读提交级别每次语句执行前重新生成,可重复读级别在事务启动时生成 [75]