TradingYesterday level
获赞
137
粉丝
54
关注
37
看过 TA
1659
门头沟学院
1981
Java
IP属地:广东
暂未填写个人简介
私信
关注
0 点赞 评论 收藏
分享
06-17 10:01
门头沟学院 Java
程序员牛肉:觉得自己最大的收获是什么
投递字节跳动等公司9个岗位
0 点赞 评论 收藏
分享
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端?面试环节有几轮?面试评价?)面试官建议- 在项目介绍时可以更深入一些,详细说明遇到的技术困难及解决方案。- 讨论技术选型的原因,即为什么选择某种技术而不是其他的,并解释这些技术的原理和可能存在的问题。
牛客82693339...:以后我写面经就按你这样写
查看21道真题和解析
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务