基本信息形式:一面采用半结构化技术面试形式,含自我介绍、项目深挖、基础知识考察、手撕代码等环节。一面是淘汰率最高的环节,面试官(直系主管或资深员工)会深挖项目细节,从代码实现一直追问到技术选型的决策逻辑。 时长:约45-60分钟。自我介绍1-2分钟,项目深挖15-20分钟,基础知识问答15-20分钟,手撕代码10-15分钟。 氛围:面试官技术功底深厚,会针对项目细节层层追问。一面“拷打两小时”是常态。回答需扎实、逻辑清晰、体系完整。如果手撕代码环节写不出来,大概率直接淘汰。
面试流程网申通过 → 一面通知 → 按时参加面试 → 自我介绍 → 项目深挖 → 技术基础知识问答 → 手撕代码/算法题 → 反问环节 → 退场。 技术岗一面试题及参考回答
一、编程基础与算法题LRU缓存机制(腾讯后台面试官10个里面有三四个会出此题) 要求实现满足O(1)时间复杂度的get和put 核心思路:双向链表 + 哈希表(HashMap + 双向链表) 面试官追问:为什么要用双向链表?(删除节点时需要找到前驱节点,双向链表O(1),单向链表O(n)) 面试官追问:如果要求线程安全怎么改造?(可用ConcurrentHashMap替换HashMap,并在操作链表时加锁)
LeetCode 198 打家劫舍(动态规划,考察状态转移方程推导) LeetCode 199 二叉树的右视图(BFS/DFS,考察层序遍历的应用) 三个有序数组的交集(哈希表或多指针) 买卖股票的最佳时机(LeetCode 121,要求用动态规划/贪心) Java接口和抽象类的区别,分别能不能new对象 多态是什么?详细介绍一下 JVM运行机制与类型安全检查 设计模式了解哪些? 答:单例模式(枚举实现)、工厂模式、观察者模式(Spring事件监听)、代理模式(JDK动态代理 vs CGLIB)。若提到装饰者模式,主动以Java IO流为例解释“包装类”机制,容易引发后续代码题。举例说明具体使用场景。
二、操作系统与计算机网络题键入一个域名,整体怎么流转的(要很详细) HTTP/HTTPS区别与粘包问题:HTTP无状态,HTTPS加了SSL/TLS;粘包问题可通过固定长度、特殊分隔符或基于消息头Length字段解决。 TCP四次挥手,为什么等待2MSL :2MSL是为了保证最后一个ACK报文能被对端收到,避免新旧连接混淆。 拥塞控制算法(慢开始、拥塞避免、快重传、快恢复) 。追问:“慢开始前期是指数型增长还是线性增长?”(指数型增长,每经过一个RTT,拥塞窗口翻倍)
三、数据库与Redis题MySQL两种存储引擎区别 :MyISAM表级锁、不支持事务;InnoDB行级锁、支持事务。追问:如果大量增删操作应该选哪个?(InnoDB,行锁比表锁并发性好,支持MVCC多版本并发控制) 索引类型与聚集索引/二级索引 。追问“当二级索引查出的数据分布在多个数据页时,比主键索引多花费几次IO?”(每一条二级索引命中都要回一次主表,100条命中就可能多100次随机IO) Redis分布式锁 。Redis主从架构下主节点宕机数据未同步,锁可能丢失。解决方法:Redlock算法(多节点多数派加锁)进一步提问“raft协议为什么n/2+1认为ok?”(保证多数派确认,满足Quorum机制) Redis大Key的影响 :大Key导致慢查询、网络阻塞、集群数据倾斜。追问“为什么会导致执行速度慢?”(Redis单线程,处理大Key时会阻塞其他命令)
四、项目深挖题“高并发秒杀系统”项目(STAR法则) “这个项目有正式用户使用吗?为什么没有上线?” 面试官考察项目真实性和工程落地能力。回答模板:“该项目目前在公司内部X个部门小范围试点,日活约X,因为XX原因未全量放开。我从中沉淀了XX技术方案,总结的XX指标已用于XX新项目迭代。”
|