前言
其实鄙人不善言辞,这个面经也是随性发挥,想到啥说些啥,更多是对自己开发历程的一些感受和自己学习的方法。不过,最后我想表达的是,在开发过程中每一行代码,每一种设计模式的使用,思考的重点和角度都会有所不同。所以,能够尝试不同的技术栈,从不同的视角来思考并解决问题,融会贯通,才是我个人追求的技术之“道”。
以下内容中,我谈及到的学习方法、学习面试资料,均可以免费分享给大家,希望大家在今年的金九银十里能够发挥顺利,进到自己想进的公司,共勉!
另外我这里为大家准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中)
资料获取方式:转发和评论这篇文章,然后关注小编,点击传送门即可打包带走所有资料~
58 一面 40min 挂
- 自我介绍
- 离职原因?为什么这个时候离职?
- http1.1 http1.0 http2.0 区别
- redis长度过长怎么优化?哪个api,数据量超过多少效率会变低?
- MySQL做过哪些优化?覆盖索引?limit两个参数区别?MySQL分页优化的其他方法
- concurrenthashmap如何保证线程安全,说说你的理解
- arraylist linkedlist 使用场景
- 本地线程和守护线程的区别,Thread.setDemon();
- 线程状态
- 线程池参数?线程池为什么用new的不好?
- 项目:前台如何调后台接口?rpc?主服务项目多大
- 有什么问我的?
- 目前薪资 期望薪资?
- 鼓励
字节跳动 一面 78min 过
- 自我介绍
- 你对全栈的理解
- 离职原因,为什么这个时间离职
- 技术上没有学到东西吗?
- 哪块儿比较熟?
- synchronized?mute lock怎么实现的
- Java看过哪些源码?线程池好处?多创线程就怎么了?压测的时候创建几千个线程才几毫秒这点儿开销有必要节省吗?内存开销,时间开销?线程池参数,execute执行流程,work?没有工作会删除吗?睡眠状态?idl怎么配置的?最大线程满了之后?
有哪些Map?还有啥Map?用的jdk几?说一下HashMap数据结构,put值散列冲突怎么解决?链表树化转移数量?为什么是8为什么是6??为什么数组要是二次幂?怎么扩容的?扩容rehash的流程? - concurrentHashMap的散列流程?concurrentHashMap怎么实现的线程安全?CAS什么意思,怎么实现的?Unsafe怎么实现?concurrentHashMap什么时候用到CAS?并发情况下两个线程都到之后怎么插入的?初始化的时候两个线程都检测到需要初始化了,然后怎么做的?
- 算法题 coins硬币 / 一句都没写出来,做了20min白卷交的,(我:该用动态规划做,但不知道怎么下手了,面试官:转移方程怎么写?我:对不起,忘记了)
- 怎么学习的?
- 最常看的博客?网站?
- 有什么好书?技术和非技术都行
- 怎么看待学习和看书?
- 你有什么问我的?
- 我进入您的部门哪方面需要提高?
- 大概什么时候出结果?
字节跳动 二面 30min 没算法题 挂
- 「忘记录音了,只记得这些了」
- 自我介绍
- 为什么离职?
- 你觉得自己有什么可以拿出来讲的点吗?
- 你做的主要工作有什么?最复杂的一个业务讲一下流程?
- 并发度提100倍有哪些优化的点?
- 限流怎么做的?令牌桶的算法实现?限流还有哪些方式?
- 接口450ms 优化到了 360 ms怎么优化的?
- tomcat只是修改了一下参数吗?
- redis集群部署方式?主从和哨兵的区别?
- 缓存方式还有哪些?
- redis数据结构,string底层实现,跳表复杂度?
- redis使用过程中出现过变慢的情况吗?
- nginx后面的形态是怎么样的?
- 网关层还了解什么技术?
- 对自己的定位,技术发展?
- 别人对你的评价?
- 你有什么问我的?
流利说 一面 40min 过
- 自我介绍,项目 20 min,
- 单点故障怎么解决?添加节点自动化还是手动?提升系统负载能力怎么测的??
- http 1.0 1.1区别?
- 并发并行区别?
- 并发数达到了400多怎么做的优化?
- 缓存穿透?其他请求如何知道值已经到缓存中了?
- 锁怎么做的?分布式锁怎么做的?放过去的请求失败或者延迟大量请求阻塞在那里怎么办?
- 日志记录模块讲一下?日志统一记录?
- 可用性怎么保证的?报警怎么实现的?报警的指标只是健康检查?
- 服务之间的相互调用有涉及到吗?分布式链路追踪如果某个服务调用出问题了,怎么排查问题?
- https协议目标源是静态文件,按回车整个请求链路?http静态文件和接口请求的区别?对CDN有了解吗?https加密是对称还是非对称?
- SQL调优你会怎么做?索引的数据结构?MYSQL的事务有哪些?比较常用的是哪些?
- 常用的Linux命令一直说,直接说命令的名字
- Java转golang怎么看?
- 你想问我?
- 14号线下进行后续3轮面试。「已拒」
百度 一面 50min 过
- 自我介绍
- 关键SQL优化怎么优化的?为什么性能不好?主键必须有吗?数据索引密集度很差的话,你的优化意义不大吧?
- MySQL有哪几种索引?聚簇索引和辅助索引的区别?索引数据结构?为什么用B+树?
- MVCC?版本号怎么变化的?更新的数据的时候怎么确定版本的?幻读怎么解决的?
- 一个SQL怎么走的索引?MYSQL会怎么选的?MySQL哪些不正规的写法无法命中索引?
- MySQL有哪几种日志?redo log主要有什么用?提交之后100%落盘吗?为什么MySQL要写到redo log buff内存?
- redis一般怎么用的?为什么选择用redis?为什么redis快呢?
- redis几种数据类型?redis string的底层实现?
- 分布式锁用过吗?说说怎么用的?用的哪个命令?
- redis 底层 hash 表扩容机制说一下?
- 类加载过程?常用的类加载器?调用顺序?为啥双亲委派?
- mq重复消费,丢消息的问题怎么解决?redis的list有哪几种操作?布隆过滤器特点?缓存穿透?
- static关键字的用法?
- 用到的数据结构那些?Map put的流程讲下
- kafka,zookeeper了解吗?
- ThreadLocal用过吗?不remove掉会有什么问题?
- 口述算法:之字打印。
- 有什么问题?
百度二面 68min 过
- 自我介绍
- 哪个项目时间长一些,两个项目技术栈都讲一下,详细介绍一下***项目具体做了哪些事情,一些查询维度的接口?如果现在让你开发一些接口,你怎么做接口隔离。表的数量?表数据量?
- SQL优化介绍一下做了哪些?怎么替换?
- 限流怎么做的?解释一下
- 介绍一下另一个平台。按刚才的介绍方式。
- redis解决客户端session共享信息怎么解决的。
- redis分布式锁解决了什么问题?
- redis为什么能支持分布式锁?使用方式有哪些?
- MQ用在业务场景?MQ本身的优势是什么?一般什么情况下可以使用这个技术?核心本质原因是什么呢?开线程做不就可以了区别是什么?
- zk,kafka
- 你们的总线讲一下?
- Spring循环依赖怎么解决?
- 让你写一下堆栈溢出你怎么写?为什么往集合设置那么多元素没有被GC?
- 介绍一下Java的锁?
- 你看这些源码自己的理解是什么?介绍了线程池execute,submit中适配的思想
- 你有什么问我的?10min
百度3面 36min 过
- 自我介绍
- 写博客原因?
- 离职原因?
- 为什么裸辞?
- 还有哪些再看的机会?
- 长期规划?
- 你最大的优势?
- 你怎么学习一个技术?
- 你如何实现一个短期目标?
- 还有什么问我的?
- 「流程快到没朋友」,三面完半小时发来了测评,三面完一个小时发来了材料准备的邮件。
搜狐 1 面 64min 过
- 自我介绍
- 有其他offer吗?
- tcp三次握手,四次挥手为什么是4次?
- http1.0 1.1 2.0?
- redis 分布式锁的实现方式?
- redis 数据结构有哪些,zset 底层数据结构是什么,讲一下?
- == equals区别,如果hashcode相等代表equals相等吗?
- hashmap底层实现方式『tableSizeFor,hash』?
- 1.8相比1.7为什么头插变尾插?
- 线程安全的map有哪些?为什么用concurrenthashmap?底层实现是什么?
- 什么时候变成红黑树?双哈希表?「这些其实讲到了源码层面,initTable,resize,tryPresize,Thread.yield,ForwardingNode。」
- volatile讲一下,MESI?
- Spring IOC,AOP你的理解讲一下?
- Spring注入方式知道哪些?
- bean是线程安全的吗?
- 缓存穿透,雪崩,击穿讲下你的理解。雪崩问题的解决方案?
- 实际场景提:活动页面,对于该页面数据有些用户本身没有缓存,有些用户有对应缓存。参加活动了的用户才有缓存,来了大量请求如何确保用户的请求正常返回。
- Innodb,memory区别?聚簇索引,非聚簇索引区别?B树,B+树区别?innodb还有什么索引?回表操作再走一遍主表吗?什么情况下不走?
- 4种事务隔离级别和分别的问题?
- Linux命令用的多吗?awk用过吗?
- SQl调优你怎么做的?
- Java垃圾收集器知道哪些?高并发情况下用哪个?
- 算法:二叉树中序遍历,递归非递归实现
- 写一下单例模式
- 有什么问我的?
- 哪里需要提高?
- 框架仅停留在使用层面-14,15,16题
- 业务上思考的少-16题
- 部门技术栈?
- 部门所做业务?
- 后续面试流程?-1年多经验两轮技术面。
总结
最后我为大家准备了Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。作为开发人员来说,不说要求自己成为业内顶尖,但也要保证自己不被市场所淘汰,学习对于程序员来说是最基本的事情。
资料获取方式:转发和评论这篇文章,然后关注小编后点击传送门即可打包带走所有资料~