字节跳动 新业务 后端开发 日常实习 一面
先自我介绍,然后被打断,面试官回消息,然后介绍实习,开始提问
实习项目
- 你做了什么,实现了那些功能,怎么实现的,问的很细,怎么查的数据库,取到数据之后做了什么
然后面向对象
- 说一说你认为什么是接口
- 说一说重载和重写
- 为什么有重载
然后基础知识
- 说一说 进程、线程、协程的区别和联系(这里把进程间通信、线程间通信、进程调度、线程调度,协程复用线程全说了)
- 说一说阻塞和非阻塞
- 说一说同步和异步
- 说一说 select、poll、epoll,各自优缺点,适用场景
- 说一说并发和并行
然后数据库
- MySQL 用过哪些 存储引擎,MYISAM 和 Innodb 的优缺点和适用场景
- Innodb B+ 树非叶子节点是怎么存储的
- 联合索引是怎么实现的
到实际应用了
- 什么时候用 mysql(关系型)、什么时候用 key-value(比如Redis),这里面试官想考的是适用场景,说了很多具体的场景,直接给量化指标(2000 字段,百万数据,5000 qps, 20ms 内完成),但是他给我说的不是这个意思,不过最后都答出来了,这里说了很多,我也提出了自己的看法,最后面试官说,看场景,取决于需求,
- 说一下什么时候用单线程什么时候用多线程
- 使用过消息队列吗,它的适用场景
算法
- 给定一个数 n,如 23121,给定一组数 A,{2, 4, 9},返回用A可以组成的小于 n 的最大数,A 不为空,答案 22999,
(这里的说一下,面试官在我写题的时候直接把摄像头关了,然后我让给提示的时候才打开,刚开始没写出来,最后给他解释代码的时候,突然想到解法,过了),
字节算法真只看结果,DFS 都能过
反问:
学习上的建议
- 多读书,多写代码,框架什么的多用一用,
- 现在有些东西感觉用不上(比如:面向对象),但是工作之后会发现很有用