TradingYesterday level
获赞
92
粉丝
45
关注
37
看过 TA
1267
门头沟学院
1981
Java
IP属地:四川
暂未填写个人简介
私信
关注
03-23 18:13
门头沟学院 Java
2.21 ssob投递字节2.23晚 字节约面2.27  字节一面 当天下午面完五点秒约二面3.6 二面 中间因为面试官时间忙改了一次面试时间 导致二面跟一面隔了一周多3.11 下午字节三面 面完感觉表现不算特别好 焦虑是否会挂3.12 三面后的下一天hr 通知三面过了 当时真的非常开心 但开心真的只有知道自己oc之后的那一刻是开心的,后面都会有焦虑跟畏惧感3.12  当天下午约hr面3.16 oc 收到offer邮件ps:在面字节过程中 也收到滴滴后端以及百度测开的面试,滴滴只有两轮技术面,滴滴二面是在我当时字节二面当天的下午,字节二面是在晚上,滴滴二面面试官拷打的问题基本上都能打上,可惜出了一道没做过的hot100算法,没写出来,面完就挂,当时真的感觉天塌了,因为觉得自己很难拿字节offer,所以想着拿滴滴作保底,挂了那一刻真的万念俱灰,晚上字节二面准备状态都不太好了,当时一直告诉自己大不了就重头来过嘛!别给自己太大压力,幸运的是,字节拿到offer了,要不然真的意难忘😭中间也面了百度侧开,两面,简简单单,也拿到hr口头offer,只不过朋友建议尽量别去测开,后面字节拿到offer后就拒了,整个过程真的惊心动魄😭😭😭顺带附张聊天记录图吧这张是三面后,第二天hr通知我过了的那一刻! 以及后面hr面后hr安慰我说绝对要我,被坚定地选择的那种感动!!!感觉很幸福3.23 来成都入职的几天,真的水土不服!!!独在异乡为异客 最有感受的一集  一个人全身乏力加头痛 去看病  难受感加孤独拉满 以后找实习base一定离学校近一点或者有搭子😭
0 点赞 评论 收藏
分享
03-19 09:26
门头沟学院 Java
### **一、项目深挖**1. **项目技术亮点**     - **校园美食会项目**:基于Redis实现分布式锁解决超卖问题,使用乐观锁处理一人多单场景,通过双拦截器优化Token刷新逻辑。   - **动态线程池组件**:基于Redis发布订阅机制实现线程池参数动态调整,结合定时任务上报核心参数。2. **短信登录流程**     - 用户输入手机号→后端生成验证码并存储Redis(Key为手机号,Value为验证码)→调用阿里云短信服务发送→用户提交验证码后校验→未注册用户自动创建账号。3. **Token刷新逻辑**     - 拦截器拦截所有请求,校验Token有效性后刷新Redis中Token的过期时间,保障用户持续活跃状态。4. **分布式锁优化**     - 单机环境使用`synchronized`锁用户ID;分布式场景改用Redis实现可重入锁,通过Hash结构记录线程标识和重入次数。---### **二、基础技术问题**1. **HTTP vs HTTPS**     - **HTTP问题**:明文传输存在安全风险(窃听、篡改)。     - **HTTPS优化**:通过SSL/TLS协议加密,结合非对称加密(证书验证)和对称加密(数据传输)提升安全性。2. **跨域问题(CORS)**     - 跨域触发条件:协议、域名、端口不一致。解决方案未深入讨论,面试官提示需补充JSONP、CORS或反向代理等方案。3. **ThreadLocal应用**     - 用于拦截器中用户信息传递,通过线程隔离的ThreadLocalMap存储数据,避免多线程竞争。---### **三、Redis相关**1. **数据结构选择**     - Token存储使用String类型(Key为Token,Value为用户信息),设置过期时间实现自动清理。2. **分布式锁实现**     - 通过Redis的SETNX命令和Lua脚本保证原子性,记录线程标识和重入次数支持可重入性。---### **四、MySQL与索引**1. **联合索引最左匹配原则**     - **场景1**:`WHERE b=1 AND a=2`(联合索引(a,b,c))→ **命中索引**(优化器自动调整顺序)。     - **场景2**:`WHERE a>1 AND b=2` → **索引失效**(a范围查询后b无序)。     - **场景3**:`WHERE a=1 AND b>2` → **命中a、b索引**(a等值查询后b有序)。2. **SQL执行顺序**     - 优先级:`FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT`。---### **五、网络与协议**1. **WebSocket应用**     - 用于商家接单实时通知,对比HTTP轮询优势:长连接、低延迟、服务端主动推送。这个地方被拷打了websocket底层实现以及如果用http来实现要websocket相同的功能要怎么实现?还问了服务端能向客户端发http请求吗?---### **六、反问环节**- 候选人提问字节技术氛围,面试官简要介绍业务方向(未详细记录)。---### **评价与建议**- **优势**:项目设计合理,对分布式锁、Token机制等场景理解较深。  - **待提升**:跨域解决方案、服务端主动通知实现(如WebSocket底层机制)、索引失效场景判断需更严谨。  - **面试难度**:中等偏上,侧重项目落地能力和底层原理。
查看12道真题和解析
0 点赞 评论 收藏
分享
03-12 20:51
门头沟学院 Java
吐槽一下:企业微信是真忙啊,面试过程中,面试官还会被拉去开会,开局写完三道算法之后,硬是让我等了将近一个小时,体验非常不好....---#### **一、算法题**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)
查看16道真题和解析
0 点赞 评论 收藏
分享
03-12 20:46
门头沟学院 Java
最可惜的一次,滴滴二面问题基本上都能答上,可惜出了道刚好没做过的hot100,然后就挂了,唉...一面面经面试问题与知识点总结1. 项目经历1. 第一个项目 技术点: 乐观锁解决超卖问题(如秒杀场景)。 Redis分布式锁实现“一人一单”限制。 扩展问题: 分布式锁的实现细节(如Redisson的底层原理)。 超卖问题的其他解决方案(如令牌桶限流)。 2. 第二个项目 技术点: 基于Redis发布订阅机制实现线程池参数动态调整。 配置中心设计与定时任务上报线程池状态。 扩展问题: 对比Apollo、Nacos等配置中心的实现差异。 线程池参数动态调整的性能影响(如核心线程数修改的底层逻辑)。 2. Java基础1. HashMap底层实现 回答要点: JDK1.8前:数组+链表;JDK1.8后:链表长度≥8且数组长度≥64时转红黑树。 树化后若节点减少,红黑树会退化为链表(节点数≤6时)。 扩展问题: 树化阈值为8的原因(哈希冲突概率与性能权衡)。 2. ConcurrentHashMap线程安全 回答要点: JDK1.7分段锁;JDK1.8后CAS+synchronized锁桶节点。 扩展问题: ConcurrentHashMap的size()方法实现(分段统计再求和)。 3. 事务ACID与隔离级别 回答要点: MySQL默认隔离级别为可重复读(通过MVCC实现)。 脏读、不可重复读、幻读的解决方式。 扩展问题: MVCC中ReadView的生成逻辑(活跃事务ID列表)。 3. 数据库1. 索引与B+树 回答要点: B+树非叶子节点仅存索引值,叶子节点通过链表串联(支持高效范围查询)。 联合索引需满足最左匹配原则(如索引(a,b,c)需查询条件包含a)。 扩展问题: 索引下推(ICP)优化原理。 2. 红黑树 vs B+树 回答要点: 红黑树为二叉平衡树,调整频繁;B+树为多路平衡树,层高更低(减少磁盘IO)。 4. Redis1. 持久化方式 回答要点: RDB:定时快照,恢复快但可能丢数据。 AOF:追加命令日志,数据更安全但文件较大。 扩展问题: AOF重写机制(压缩命令为最终状态)。 2. 缓存击穿解决方案 回答要点: 空值缓存 + 布隆过滤器过滤无效请求。 互斥锁防止大量请求穿透到数据库。 5. Spring1. IOC与单例模式 回答要点: Spring Bean默认单例(通过单例注册表管理)。 单例的线程安全问题(无状态Bean vs 有状态Bean)。 6. 算法题题目:二叉树层序遍历(LeetCode 102)。二面---#### **1. JVM 垃圾回收算法**- **问题**:    解释 JVM 中标记清除、标记整理、标记复制三种垃圾回收算法的原理、优缺点,以及分代回收中新生代和老年代分别使用的算法。- **扩展追问**:    - 为什么新生代使用标记复制算法?    - 老年代为何更适合标记整理而非标记清除?    - 内存碎片问题在不同算法中的表现?---#### **2. ConcurrentHashMap 实现原理**- **问题**:    对比 HashMap 和 ConcurrentHashMap 的线程安全实现,解释分段锁(JDK 1.7)或 CAS + synchronized(JDK 1.8)的底层机制。- **扩展追问**:    - 分段锁如何保证并发安全?    - JDK 1.8 中为何放弃分段锁?    - ConcurrentHashMap 的 get 操作是否需要加锁?---#### **3. 生产者消费者模型实现**- **问题**:    设计一个线程安全的阻塞队列,要求支持多生产者、多消费者,并在队列满/空时阻塞等待。- **扩展追问**:    - 如何通过锁和条件变量(如 `ReentrantLock` + `Condition`)实现?    - 为什么不能直接使用 `BlockingQueue`?    - 如何处理线程唤醒的“虚假唤醒”问题?---#### **4. LRU 缓存设计**- **问题**:    实现一个 LRU 缓存,要求 `get` 和 `put` 操作的时间复杂度为 O(1)。- **扩展追问**:    - 为什么选择哈希表 + 双向链表的结构?    - 如何维护链表节点的顺序?    - 单链表能否实现?时间复杂度如何变化?---#### **5. 算法题:旋转数组的二分查找**- **问题**:    给定一个升序数组经未知次数左旋后的结果(如 `[4,5,6,7,0,1,2]`),设计算法在 O(log n) 时间内找到目标值。- **扩展追问**:    - 如何确定旋转点(分界点)?    - 如何处理二分后左右区间的有序性?    - 代码实现中的边界条件(如数组完全有序、重复元素)?---#### **面试评价方向**1. **基础深度**:JVM 垃圾回收算法、并发容器的底层实现。  2. **设计能力**:生产者消费者模型、LRU 缓存的设计思路。  3. **算法思维**:二分查找变种问题的分析与编码能力。  4. **沟通表达**:能否清晰阐述项目亮点(如乐观锁、分布式锁、动态线程池)。  ---
0 点赞 评论 收藏
分享
03-12 20:39
门头沟学院 Java
---#### **一、项目相关**1. **超卖问题解决方案**     - 如何通过乐观锁解决库存超卖?     - 分布式锁(Redis)如何实现一人一单限制?     - 乐观锁失败后的处理机制(直接返回失败?是否有重试?)     - 分布式锁超时场景下的问题(锁提前释放导致并发问题,看门狗机制如何续期?)2. **Redis应用**     - CAP理论在Redis主从模式中的体现(主从异步复制牺牲一致性保证可用性)     - Redis哨兵模式与集群模式的区别?---#### **二、数据库**1. **MySQL事务**     - 事务隔离级别有哪些?默认级别是什么?     - 事务传播机制(如`PROPAGATION_REQUIRED`、`PROPAGATION_REQUIRES_NEW`的区别)  ---#### **三、并发与多线程**1. **线程池**     - 核心参数(核心线程数、最大线程数、队列类型、拒绝策略)     - 工作原理(任务提交流程、非核心线程创建条件)  2. **锁机制**     - 分布式锁(Redisson)与本地锁(synchronized)的适用场景差异     - 乐观锁实现方式(MySQL的CAS操作)  ---#### **四、Java基础**1. **类加载机制**     - 双亲委派模型流程及作用(保护核心类库)     - 如何打破双亲委派(自定义类加载器重写`loadClass`方法)  2. **集合框架**     - HashMap冲突解决(链表转红黑树)  ---#### **五、操作系统**1. **内存管理**     - 页面置换中的“抖动”现象(频繁换页导致性能下降)     - 页面置换算法(LRU、LFU、FIFO)  2. **调度算法**     - 常见作业调度算法(短作业优先、长作业优先、高响应比优先)  ---#### **六、网络**1. **TCP协议**     - TCP报文头字段(源/目的端口、序列号、ACK/SYN/FIN标志位、窗口大小)  ---#### **七、算法与数据结构**1. **堆的应用**     - 优先级队列底层实现(最大堆/最小堆)     - Top K问题解法(维护大小为K的最小堆)  2. **经典算法**     - 快排实现思路(基准选择、分区、递归)     - 最短路径算法(Dijkstra、Floyd)  3. **编程题**     - **硬币找零问题**(动态规划,求最少硬币数)     - **字符串频次统计**(前缀和优化查询效率)  ---#### **八、其他**1. **系统设计**     - CAP理论的实际取舍(Redis主从模式牺牲C保证AP)  ---### **参考答案/关键点**1. **乐观锁与分布式锁**     - 乐观锁通过版本号/CAS实现,失败后直接返回错误;分布式锁需结合超时和续期机制(Redisson看门狗)。  2. **事务传播机制**     - `PROPAGATION_REQUIRED`:加入当前事务;`PROPAGATION_REQUIRES_NEW`:新建独立事务。  3. **双亲委派打破**     - 自定义类加载器重写`loadClass`方法,如Tomcat为隔离Web应用打破委派。  4. **TCP三次握手**     - SYN、SYN-ACK、ACK报文交互,序列号保证可靠传输。
查看25道真题和解析
0 点赞 评论 收藏
分享
03-12 20:34
门头沟学院 Java
### 字节生活服务成都一面面经---#### **一、项目相关**1. **第一个项目**     - **登录模块实现**       - 短信登录流程如何设计?验证码如何存储(Redis哈希结构)?       - Token与Cookie的区别?分布式场景下如何解决Session共享问题?       - Token刷新机制如何优化用户体验?     - **秒杀场景设计**       - 如何解决库存超卖问题?(乐观锁、分布式锁)       - 分布式锁的实现原理(Redis Redisson的可重入、超时续约机制)?       - 如何通过消息队列(RabbitMQ + Lua脚本)优化秒杀性能?  2. **第二个项目**     - 如何基于Redis发布订阅实现动态调整?     - 如何采集线程池指标并上传监控中心?  ---#### **二、技术问题**1. **Redis**     - Redis数据结构及适用场景(String、Hash、ZSet等)?     - ZSet如何实现排行榜?Hash如何存储对象?     - Redis分布式锁的底层实现(Redisson的Watch Dog机制)?  2. **MySQL**     - 索引类型(主键索引、联合索引、前缀索引)?     - B+树的结构特点?联合索引的最左匹配原则?     - 事务ACID特性及隔离级别(读未提交、读已提交、可重复读、串行化)?  3. **网络协议**     - HTTP请求报文组成(请求行、请求头、请求体)?     - `Content-Length`的作用及必要性?  ---#### **三、编程题**1. **矩阵中的最大岛屿面积**     - **题目**:给定二进制矩阵,计算由相邻1组成的最大面积。     - **思路**:DFS/BFS遍历,标记已访问节点。  2. **二叉树路径总和**     - **题目**:找出根节点到叶子节点路径和为给定值的所有路径。     - **思路**:递归遍历,维护路径和当前和,叶子节点时校验结果。  ---#### **四、反问环节**1. 部门业务方向?     - 生活服务业务(类似美团,聚焦团购、酒旅等场景的用户体验优化)。  2. 对实习生的要求?     - 基础技术能力、需求落地能力、学习能力。  3. 面试流程?     - 技术面2-3轮 + HR面。  4. 实习时间要求?     - 一周5天,持续半年以上。  ---#### **五、总结建议**- **项目**:需深入细节,如Redis数据结构选型、锁的优化逻辑。  - **基础**:加强MySQL索引原理、HTTP协议细节、Redis底层机制。  - **代码**:注意边界条件(如矩阵越界)、DFS/BFS模板熟练度。
查看16道真题和解析
0 点赞 评论 收藏
分享
原内容仅作者可见
0 点赞 评论 收藏
分享
2024-12-20 23:50
门头沟学院 Java
第一次写面经下面的内容是录音之后导出文本然后由gpt生成的,大致包含了所有面试官提问的问题。自我介绍- 请先自我介绍一下。- 介绍一下最近做的项目,这个项目是你自己一个人做的吗?- 这个项目是在单机去跑的吗?有没有上线过?技术难点- 做这个项目主要的技术难点在哪?- 秒杀逻辑的主要技术挑战是什么?- 在集群模式下考虑使用分布式锁吗?分布式锁与并发处理- 构造的分布式锁具体指的是什么?- 如何优化锁误删的问题?- 在锁误删中加锁和解锁的操作是如何实现的?- 在锁误删场景中,如果线程成功获取到锁,但该线程的业务逻辑执行时间超过锁的超时时间,如何处理?- 线程在感知到锁快要超时的时候,怎么进行续期操作?消息队列选择- 为什么考虑使用 Redis 的 string 结构作为消息队列?- 对其他的消息队列(如 RabbitMQ、Kafka)有什么了解?缓存相关问题- 什么是缓存穿透、缓存雪崩?- 如何防止缓存雪崩?- 解决缓存击穿的方法有哪些?并发控制- synchronized 和 lock 的区别是什么?- 在单台机器部署的情况下,如何对同一个用户加锁以确保接口的线程安全?(类似于同一用户用不同设备去下单,也就是不同线程同一userId,如何保证这里的线程安全)(除了userId字符串常量池引用,还可以设定synchronized锁的对象是哪些来达到同样的效果)- 如何获取用户 ID 对应的常量值以保证其唯一性?(intern方法)编程实践- 算法题LeetCode原题 复原ip地址,不允许定义全局变量,(因为时间不太够了,面试官就要求写出回溯方法的主体结构即可,然后解释以下函数中的参数什么含义)面试反问- 部门业务面向B端还是C端?面试环节有几轮?面试评价?)面试官建议- 在项目介绍时可以更深入一些,详细说明遇到的技术困难及解决方案。- 讨论技术选型的原因,即为什么选择某种技术而不是其他的,并解释这些技术的原理和可能存在的问题。#美团##牛客解忧铺##面经#
牛客826933393号:以后我写面经就按你这样写
查看21道真题和解析 牛客解忧铺
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务