腾讯企业微信测开一面(二面已拒)

吐槽一下:企业微信是真忙啊,面试过程中,面试官还会被拉去开会,开局写完三道算法之后,硬是让我等了将近一个小时,体验非常不好....

---

#### **一、算法题**
1. **二维数组处理**  
   - 题目描述:对二维数组按第一列升序、第二列降序排序后,求第二列的最长递增子序列  
   - 思路:排序后转化为最长递增子序列(LIS)问题,用动态规划或贪心+二分解决  

2. **滑动窗口问题**  
   - 题目描述:维护一个窗口,保证窗口内字符不重复,求最大窗口长度  
   - 思路:滑动窗口+哈希表记录字符位置  

3. **二叉树第K大元素**  
   - 题目描述:按左-根-右顺序收集元素后取第K大值  
   - 思路:中序遍历得到有序列表后直接取第K大(暴力解法)  

---

#### **二、项目相关**
1. **登录鉴权机制**  
   - 流程:手机号+验证码登录,未注册用户自动注册  
   - Token刷新:通过拦截器对非登录请求刷新Token有效期  
   - **追问**:  
     - Token生成算法?使用JWT(Header+Payload+Signature)  
     - Token唯一性保障?通过JWT签名和用户唯一标识  

2. **数据库优化**  
   - 慢查询解决:检查索引失效、分库分表、SQL优化  
   - **索引原则**:  
     - 高区分度字段优先  
     - 联合索引遵循最左匹配原则  
     - 避免对长文本字段建索引  

---

#### **三、缓存问题**
1. **缓存穿透**  
   - 场景:请求不存在的数据(如非法ID)  
   - 解决:缓存空值+布隆过滤器  

2. **缓存击穿**  
   - 场景:热点Key失效后高并发请求压垮数据库  
   - 解决:互斥锁(如Redis的SETNX)  

3. **缓存雪崩**  
   - 场景:大量Key同时过期  
   - 解决:随机过期时间+集群部署  

---

#### **四、多线程与锁**
1. **线程安全集合**  
   - `ConcurrentHashMap` vs `Hashtable`:分段锁 vs 全表锁  

2. **锁机制**  
   - 悲观锁:`synchronized`、`ReentrantLock`  
   - 乐观锁:CAS(如Atomic类)、版本号  
   - **区别**:悲观锁强一致但性能低,乐观锁高并发但需处理冲突  

---

#### **五、消息队列**
1. **选择RabbitMQ的原因**  
   - 轻量级、适合单体项目,对比Kafka/RocketMQ更简单  

2. **长连接实现**  
   - 基于AMQP协议,通过心跳机制维持TCP长连接  

---

#### **六、设计模式与AOP**
1. **AOP应用场景**  
   - 公共字段自动填充(如创建时间、更新人)  
   - 实现:通过切面拦截DAO层操作  

---

#### **七、反问环节**
1. 实习生工作内容:测试平台开发,参与1-2个项目  
2. 面试轮次:4轮技术面(按正式员工标准)  
3. 改进建议:技术深度需加强(如Redis底层原理、锁实现细节)  

---

**参考答案亮点**  
- **JWT结构**:Header(算法)、Payload(用户信息)、Signature(签名)  
- **索引失效场景**:对字段使用函数、类型隐式转换、模糊查询左匹配  
- **CAS问题**:ABA问题(通过版本号解决)、自旋开销  
- **RabbitMQ协议**:基于AMQP,支持多种消息模式(Work Queue、Pub/Sub)
全部评论
“基于AMQP协议,通过心跳机制维持TCP长连接 ”是什么意思?知识盲区了,佬能说说嘛
点赞 回复 分享
发布于 03-19 22:07 广东

相关推荐

06-18 15:50
已编辑
一面 80min 6.3-自我介绍-实习内容拷打:介绍一下项目的模块、探讨了MCP和其他的AI问题。-八股进程线程区别、关系、为啥不直接用进程来调度、线程失败了怎么办进程有哪些通信方式、多线程冲突了咋整innodb的索引结构、B+和B区别、聚簇索引和非聚簇索引、列举判断索引失效问题,其中有一个判断select * where a=1 or b=1 and c=1 索引是否失效:and>or ,因此该查询划分是:where (a=1) or (b=1 and c=1),其中a=1的部分可用索引。介绍一下事务和事务的特性、并给出场景判断是哪个特性、事务隔离级别、分别说一下这些隔离级别可能存在什么问题什么是幻读、手撕:员工到食堂的最近距离的总和。就是两个数组,找出这些数组的最小差,用了暴力+优化两种做法。二面-40min 6.6    无自我介绍 无手撕-介绍实习。介绍了项目流程然后问我一些相关问题:怎么优化、mcp和function calling的区别、RAG流程、怎么提升准确度、知识库怎么做的、知识库检索的原理、向量距离怎么计算、为啥需要reranker、Prompt有什么经验、多Agent了解么。-基础知识:数据库索引失效有哪些、数据库隔离级别、Redis中的过期时间怎么设置、热key问题、缓存雪崩和击穿。总结:面试官说理论欠缺一些,很多只能答出部分,都是在使用角度说的,后续需要补习一些理论知识。一面二面的问题可能会相同,因为面评可能没写具体问什么问题,所以之前问过的内容还要复习。三面-25min 6.10自我介绍纯拷打实习内容,话术准备不足,实习项目还没问完就被面试官结束了。三面实在不尽人意,但暑期实习也到此为止了。发发面经攒人品。——————更新HR面已过,45min,HR啰哩巴嗦问了一堆实习内容,项目经历,因为我最近心情低落,后续再更新HR面的问题。因为这个HR导致到手的offer被迫放弃了。在此叮嘱xdm,HR面重要的是把自己的经历、信息和HR确认清楚,把自己的自信呈现出来,其他的一点也不重要。面试过程中不要轻易信任别人,尤其是HR,她工作出现的问题只会让候选人背锅。
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
06-28 18:18
已编辑
门头沟学院 Java
查看8道真题和解析
点赞 评论 收藏
分享
评论
4
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务