字节跳动面试题
面试3轮技术面+1轮HR
整体分三大块:
项目经验
计算机基础
编程题(每轮一题)
项目经验
架构+业务
做了什么核心设计优化
解决了什么难题
体现思考 业务理解 架构设计能力
项目需求设计demo:
如何设计一个微信点赞系统?
秒杀系统?
大促领券场景设计?
计算机基础
java:
jvm内存模型 性能调优
concurrenthashmap线程安全?怎么做?
hashmap的实现,复杂度,装载因子多少,为什么。
aqs
volatile
线程池
垃圾回收算法
数据库SQL优化
分表与分库
volatile 关键字
java lock相关
逃逸分析用来做什么的
ThreadLocal介绍
gc的过程和对用户进程影响
spring框架原理
redis:
redis 底层数据结构
zset使用数据结构
数据持久化方式
rdb的触发方式
redis实现原子操作
rdb过程描述
k1:1 k2:2
rdb保存k1之后做了如下修改,最终写入什么值,为什么?
删除数据之后内存怎么回收,redis占用的内存类型
缓存
限流熔断:限流算法,令牌桶, 应对流量突发场景。
配置中心
服务熔断降级
缓存穿透和缓存雪崩
缓存和数据库一致性
雪崩 击穿 本地cache
redis热点数据解决办法
redis网络层的实现
Redis 高并发、高可用
mq:
手写一个消息队列,架构设计思路
为什么用mq?
观察者设计模式
ElasticSearch:
是实时搜索引擎吗 refresh_interval长短会有什么影响
分页怎么做
分词怎么做,相关性用的什么
分片多少对于es性能影响?
mysql:
事务隔离级别,默认事务隔离级别回答对
幻读如何产生,如何解决幻读使用串行化解决幻读?间隙锁
mysql日志有哪些,binlog的格式
覆盖索引
操作系统
poll select epoll
mmap
nio
zero copy
page fault
中断
进程 线程 协程
编程题(双指针,递归,队列)
- 最长回文子串
- 非重复字符串全排列组合,示例ABCDE。
- 2亿url去重(hash,分桶,布隆过滤器)
- 两个有序数组合并
- 两个有序链表合并
- 前序中序二叉树还原
- 层序遍历二叉树
- dp(hard)
相关资料
面试官:本次面试将持续30~45分钟(实际约45分钟)
1.自我介绍(学校,专业,姓名,应聘职位,专业知识,项目简介)
2.tcp/udp的区别(八股文)
3.tcp的拥塞控制(八股文)
4.进程与线程(八股文)
5.常见的排序算法及时间复杂度(非典型八股文,刚结束的一学期上过算法课,凭借记忆讲述)
6.算法题:
a. 合并三个有序数组
b. 最长非重复子串:双指针+哈希表
Java相关
1. HashMap 和HashTable 以及CurrentHashMap 的区别。
2. synchronized 和volatile 、ReentrantLock 、CAS 的区别。
3. JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结构等。
4. Java 的四大引用
5. Java 的泛型,<? super T> 和 <? extends T> 的区别。
6. Java 线程有哪些状态,有哪些锁,各种锁的区别。
7. final 、finally、finalize 区别。
8. 接口和抽象类的区别。
9. sleep 、wait、yield 的区别,wait 的线程如何唤醒它?
10. java 中==和 equals 和 hashCode 的区别
11.String、StringBuffer、StringBuilder 区别
12.接口的意义
13.进程和线程的区别
14.讲一下常见编码方式?
15序列化 Serializable 和 Parcelable 的区别
16.string 转换成 integer 的方式及原理
17静态代理和动态代理的区别,什么场景使用?
18. 说说你对 Java 反射的理解
19. 说说你对 Java 注解的理解
20. 说一下泛型原理,并举例说明
计算机网络部分
1. TCP 与 UDP 的区别。
2. 三次握手、四次挥手。为啥是三次不是两次?
3. HTTPS 和 HTTP 的区别。HTTP 2.0,3.0?
4. 浏览器输入一个 URL,按下回车网络传输的流程?
5. TCP 建立连接后,发包频率是怎样的?
5. OKHttp
6.如何验证证书的合法性?
7.https中哪里用了对称加密,哪里用了非对称加密,对加密法(如RSA)等是否有了解?
8.client如何确定自己发送的消息被server收到?
9.谈谈你对WebSocket的理解
10.WebSocket与Socket的区别
11.谈谈你对安卓签名的理解
12.请解释安卓为啥要加签名机制?