【此文章转自乐字节】
马上又要到金九银十,想着面试大军可能也过不了几天就要来了。所以今天给大家分享 “京东和字节” 的面经,每家一二三面,我想大家可以自己测试一下能坚持到哪里。
2021秋招即将来临,很多同学会问Java面试八股文有必要背吗?
我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。
国内的互联网面试,恐怕是现存的、最接近科举考试的制度。
而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioral question,行为面试问题)。
那么为什么国内面试不采取这样的考察方式呢?简单来说,互联网IT行业的求职者太多了,如果考察的是清一溜的算法题和设计题,那么会要求面试官有极高的技术水平,还要花大量的时间成本和精力。
也许现行的八股文面试不是最优的解法,但的确是最符合当前国内IT环境的做法。
作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。
京东三面
一面
-
自我介绍
-
常用的数据结构有哪些?并大说了一些操作的时间复杂度
-
数组从下标最大的删与最小的删有什么区别?
-
介绍主要用到的技术(技术栈)
-
介绍一下集合类
-
list和set的区别?以及各个实现类和底层实现
-
CopyOnWriteList的特点及实现
-
创建一个线程有几种方式?项目中怎么创建的?
-
讲一下线程池
-
你们使用的任务拒绝策略是那种?
-
线上服务器最多可以创建多少个线程?
-
线程的状态有哪些?(线程的生命周期)
-
跟线程相关的方法介绍一下
-
HashSet的底层实现
-
介绍下HashMap和CurrentHashMap
-
HashMap线程不安全会导致什么问题?
-
为什么1.8版本中会将链表转为红黑树?
-
HashMap解决Hash冲突使用的什么方式?
-
HashMap的hash函数讲一下(如何确定槽位)
-
JVM的内存区域
-
那个区域不会发生内存溢出?
-
JVM运行时内存?
-
新生代老年代讲讲
-
JVM为什么分新生代老年代?
-
垃圾回收算法讲讲
-
类加载过程讲一下
-
双亲委派模型讲一下
-
Spring的启动流程
-
SpringBean的作用域
-
SpringBoot的特点
-
相比于SpringMVC有什么好用的地方?
-
MySQL的事务隔离级别
-
讲讲Java中的锁?
-
重入锁怎么实现的?
-
Synchronized讲讲使用及原理
-
Synchronized的优缺点?
-
retryLock了解吗?
-
Java里的轻量级锁?
-
索引了解么?balabala
-
InnoDB还能有什么索引
-
为什么用索引?项目中怎么用的?
-
讲一下B+树的实现
-
B+树与B树有什么区别?
-
MySQL的锁哪几种?
-
行锁的实现?
-
你们项目中用到Redis都是怎么用的?
-
分布式锁你们是怎么做的?
-
为什么不升级Redis版本?
-
Redis的内存淘汰策略 LRU?
-
讲讲项目为什么要用Hystrix?
二面
-
画项目架构图
-
分布式任务调度系统是怎么实现的?
-
ElasticSearch都用过那些查询方式
-
如何做数据同步的?(MySQL到ES)
-
如何做CodeReview的?
-
SpringCould都用了那些组件?
-
什么场景用到断路器(Hystrix)
-
你是如何理解分布式锁的?
-
Redis分布式锁你们是怎么用的?
-
Redis你都用到那些命令?
-
Synchronized讲讲
-
说说轻量级锁,无锁的方式(CAS ABA问题?)
-
加锁我们是为了解决什么样的问题?
-
说说volatile关键字
-
了解什么叫不可变类么?或者是叫不可变对象?
-
final的含义是什么?
-
成员变量都是final修饰的话,如何进行赋值?
-
如何关闭线程?
-
手撕代码。牛客题霸上的原题,可以去看看:NC22合并两个有序的数组
-
我有8件事要做,最要要同意返回处理结果,每件事要进行异步的方式去做。你怎么完成这个需求
-
我需要在项目启动时,将一些配置加载到内存中,你有什么方式能解决?
三面
-
自我介绍
-
讲讲做的项目
-
RabbitMQ优缺点讲一下?
-
分享一下你这个项目的挑战性吗?
-
项目中有遇到什么问题么?
-
讲讲SpringCould中用到的组件吧?
-
Feign为什么效率低?
-
为什么大部分服务对外不提供的接口都是HTTP的?(没太理解什么意思)
-
讲讲项目中为什么会把MySQL升级为ES?
-
CodeReview你都是怎么做的?
-
list跟Set有什么差别?
-
HashMap跟CurrentHashMap有什么区别?
-
讲讲Redis的数据结构
-
问了问我现在的待遇,有什么想问我的?
字节跳动三面
一面
-
介绍一下自己, 为什么选择出来看看机会
-
聊项目, 警报怎么做的, 统一接入监控项怎么做的
-
聊项目, 配置中心项目, 问实时配置推送怎么做
-
讨论为什么选择所有的组件依赖放在配置中心中控制
-
我现在要做一个限流功能, 怎么做?
-
这个限流要做成分布式的, 怎么做?
-
怎么抢锁?锁怎么释放?
-
加了超时之后有没有可能在没有释放的情况下, 被人抢走锁?怎么解决?
-
不用 zk 的心跳,可以怎么解决这个问题呢?
-
假如这个限流希望做成可配置的, 需要有一个后台管理系统随意对某个 api 配置全局流量, 怎么做?
-
某一个业务中现在需要生成全局唯一的递增 ID, 并发量非常大, 怎么做?
-
算法题, M*N 横向纵向均递增的矩阵找指定数
-
有什么想问我的?
二面
-
平时用的工具链和技术栈是什么?
-
golang 踩过坑吗?
-
这段 golang 代码有没有 bug?
-
Java 中 HashMap 的存储, 冲突, 扩容, 并发访问分别是怎么解决的?
-
拉链法中链表过长时变形为红黑树有什么优缺点?
-
HashMap 的并发不安全体现在哪?
-
HashMap 在扩容时, 对读写操作有什么特殊处理?
-
ConcurrentHashMap 是怎么做到并发安全的?
-
Java 有哪些锁机制, 分别有什么特点?
-
知道 CAS 吗? Java 中 CAS 是怎么实现的?
-
MySQL 的存储引擎用的是什么?为什么选 InnoDB?
-
MySQL 的聚簇索引和非聚簇索引有什么区别?
-
B+树和二叉树有什么区别和优劣?
-
针对一个场景设计索引,考察的是联合索引与列选择性的知识
-
现有一个新的查询场景, 要怎么解决?
-
假如要查 A in () AND B in (), 怎么建索引?
-
查 A in () AND B in () 时, MySQL 是怎么利用索引的?
-
假如查询 A in (), MySQL 是针对 N 个值分别查一次索引, 还是有更好的操作?
-
用过 Redis 的哪几种数据结构?ZSET 是怎么实现的?
-
zrange start, stop, 总长度为 n, 复杂度是多少?
-
Kafka 的消费者如何做消息去重?
-
介绍一下 Kafka 的 ConsumerGroup
-
Kubernetes 和 Docker 用得怎么样?
-
时序型数据库的存储结构是怎么样的?
-
LSM 树了解吗? 是一种什么存储结构?
-
在生产中用过 Cassandra 和 RocksDB 吗? 量有多大?
-
Cassandra 的墓碑机制是什么 ?
三面
- 聊项目和工作经验
- 用 Kubernetes 的过程中踩过哪些坑?
- 考虑一个业务场景: 头条的文章的评论量非常大, 比如说一篇热门文章就有几百万的评论, 设计一个后端服务, 实现评论的时序展示与分页
- 假如用 id 翻页的方式, 数据库表如何设计? 索引如何设计?
- 假如量很大, 你觉得需要分库分表吗? 怎么分?
- 分库分表后怎么查询分页?
- 分库分表后怎么保证主键仍然是递增的?
- 现在需要支持深分页, 页码直接跳转, 怎么实现?
- 瞬时写入量很大可能会打挂存储, 怎么保护?
- 断路器内部怎么实现的?
- 断路器会造成写入失败, 假如我们不允许写入失败呢?
- 算法题: N 场演唱会, 以 [{startTime, endTime}…] 的形式给出, 计算出最多能听几场演唱会。用你最熟悉的语言把这个算法实现
- 你用了贪心法, 贪心可能会存在什么问题?
注:每周福利均会更新,更多福利等你领取,更多技巧,欢迎在评论区一起交流!
+qun前面三位490,中间三位574,后面三位753,进qun备注123,领取Python
,web前端开发,Python爬虫,Python数据分析,大数据开发,人工智能,Java项目,Java基础等精品学习课程。带你从零基础系统性的学好Python,Java,web前端和大数据等!做一名牛逼的程序员!
希望这些能够帮助大家从一个小白成长为大牛,最后提醒大家,不要在拼搏的年纪选择安逸,希望小编的文章能够帮助到小伙伴们!