2022.03.17 字节国际化电商后端日常实习
一面(1 h)
自我介绍
面试官:看你做过点科研?为啥要找后端实习?
智力:
64匹马赛跑,最少赛几次能取得前4名的名次
八股:
计网:
- 讲讲三次握手和四次挥手
- 为什么要有time-wait和close-wait
- 如果有多个tcp链接,第四次挥手会让客户端负载变大,有什么解决办法?
socket reuse?
https://onlinehelp.opswat.com/centralmgmt/What_you_need_to_do_if_you_see_too_many_TIME_WAIT_sockets.html
操作系统:
- 进程通信的方式?除了管道、消息队列、共享内存还有什么?
- 进程间是如何保证彼此的隔离性的?面试官提示:内存如何与虚拟内存映射
- 程序调用了printf会发生什么?
回答:用户态到内核态的切换,进程上下文等,通过中断实现输出设备的输出
数据库:(我看面经都说字节都是问计网和操作系统多,结果问了超多数据库)
给了三种情景,问都针对哪些列建立索引,比如是user_id还是product_id之类的;
下面语句,如果对user_id建立索引,发生几次io?
select order_id from table where user_id = 1;
那么如果对order_id也建立索引呢?
面试官讲:比上面少一次,mysql优化器找到了索引就找到了数据之类的
因为索引包括了所有要查找的值,是“覆盖索引”B+树索引的好处?和B树的区别
事务的隔离级别?分别对应的问题(脏读啥的)?可重复读是针对谁的,不可重复读是咋回事儿?可重复读是如何实现的?
可能还想问锁,但看我回答的很语文,就放弃了MySQL最左前缀原则了解么?不了解。。我是菜鸡
算法题
lc394 字符串解码
- 最开始被问迷糊了,结果处理字符串的时候循环变量写成int型了。。面试官说常年写go,c++已经是n年前的事情了,俩人一起找bug,场面一度尴尬
- 用栈来实现的时候,第一次没做出来嵌套的,面试官提示说可以把里层的压栈就好了,顺利写出
- lc394在codetop上并不是热门题。。难过
提问(最后五分钟)