#后端开发# #字节跳动# #软件开发笔面经#
TimeLine:
投递:6月份投递,因为要准备期末考试约到7月份面试
一面:2024-07-12 下午面试,晚上电话通知二面
二面:2024-07-16 晚上7点多面试,至今未出结果
------------------------------------------------------
一面(90min+):
1. 面试官介绍组。
2. 自我介绍。
------ 计网 ------
3. TCP三次握手原理、为什么要三次握手而不是两次。
4. ddos攻击(结合三次握手)。(我没有学过网安,但是没有关系,面试官会给提示,适当联想一下就能想到。)
------ 操作系统 ------
5. 线程和进程分别概念。
6. 进程、线程通信方式。
7. 锁.
8. epoll。
------ 数据库 ------
9. 数据库MySQL的执行引擎。
10. 事务定义、ACID。
11. 四种隔离级别。
12. 问了点简单的数据库语法。
------ linux -------
13. 问了点linux操作经验,问了一些linux命令行语法。
14. 我说我会git,浅说了下git。(12、13其实感觉就在聊天。)
------ 手撕 ------
15. 小于n的最大数。(就给了几个样例,跑通就可以。)
------ 项目 ------
16. 做完题面试官好像意犹未尽,又问了下项目,但是我没有什么项目,就问了下之前做的微信小程序、pygame游戏啥的
。
------ 反问和聊天 ------
面试官:
1. 这几年的职业规划。
2. 我们这个岗位有转正,如果你能转正还会去读研吗?(因为我说了出国读可能?)
反问:
1. 面试建议。
------------------------------------------------------
二面(45min):
压力上来了,二面面试官看起来很大佬,而且晚上7点多还在字节工作。
1. 自我介绍。
2. 问项目。但是我其实没有什么项目,面试官就把我的kaggle数据竞赛和图像变化检测项目问了一遍。
3. 问知不知道CAP、为什么只能满足两个: 知道是一致性、可行性和分区容错性。然后开始瞎编为什么只能满足两个。
编完面试官说没问题,基本是对的。但是此时已经汗流浃背了,因为问的都不是常见八股。
4. 为什么编程语言会有精度丢失问题?
这里我刚开始答因为位数有限,存储不了小数那么多位。
然后面试官问为什么0.4会丢失精度。当时有点懵,后来反应过来是二进制表示问题。
之后面试官问我们编程语言,比如说python,cpp是用什么办法解决精度丢失问题的?
这里也有点懵,后来蒙了一个科学计数法,然后我说是因为直接表示成两个可以表示的数相除这样。
面试官说差不多。
5. 问了下平时接触过什么缓存。我有点懵重复了一遍他的问题哈哈,面试官说换个问法,平时有什么地方用到了缓存。
我说了redis,但是我没有用过redis。他让我简单讲了下redis,我大概扯了点redis的特点和一些数据结构。
6. 缓存异常?以及解决方法。
接上问,说了缓存击穿,但是面试官说我说的是缓存穿透。然后大概讨论了一下,把击穿穿透都讲了。然后将缓存穿透可以缓存空值解决。缓存击穿没讲出来(真不会)。
7. 有哪些设计模式?工厂模式,观察者模式挑一个用编程实现。
8. 无手撕。
------ 反问和聊天 -------
面试官:
1. 也问了一遍职业规划。然后聊了聊想去的研究生学校。
反问:
1. 为什么没有手撕呢?
答:手撕是由面试官决定出不出的,不是说每一次面试都必须要出。看了你一面做的,就不出了。
2. 组具体干什么?
------------------------------------------------------
总结:25届第一次面试大厂,感觉一面问的很基础,算法题也适中,就是二面问了好多根本没准备过的,直接给我干蒙了。而且没有一个拿得出手的项目,没办法引导面试官问问题,得找个有深度的项目了。
感觉二面应该挂了,每次都想半天,然后也没有精准答出来面试官问的。最后那个编程实现设计模式我直接说的没学过,但知道什么概念,于是就只讲了遍概念。。。