去年实习那会没投字节有点小遗憾,所以春招的时候终于还是忍不住找大佬要了个内推,虽然凉了但是也算是都尝试过了,春招也不留遗憾了。
一开始推的部门没 hc 了,佬发现后说给转去飞书了。
个人体验感觉那边部门可能老忙了,因为室友说他之前投的时候面试官也经常咕或者迟到,然后我二面的时候果然先咕了,hr 打电话改时间说在开会。然后到当天又在开会迟到 15min。嘶~,害怕.jpg
2022-04-24:字节飞书一面:55min
自我介绍
说一下进程和线程的区别和联系
哪些资源是线程独占的
说一下线程池的原理
说一下 tcp 协议是如何工作的?三次握手 & 四次挥手的过程
time-wait 状态有什么作用
url 到网页被打开的过程
数据包到达服务器内部时,服务器如何处理的?
负载均衡有了解吗
负载均衡的时候怎么处理登录信息的?
你怎么设计的登录接口
用户 token 被截获了之后被别人乱用怎么办?jwt 的 token 能被篡改吗?被修改了会怎样?server 端怎么验证的?
https 有了解吗?
http 的 keep-alive 和 tcp 的 keep-alive 有什么区别?
tcp 的保活数据包能被应用层检测到吗?
http 的请求方法,get & post 有什么区别,浏览器或者代理层对 get & post 的处理有什么不用吗?
get 的幂等是什么?post 可以幂等吗?
64 匹马,8 个赛道,找出前 4,采用什么策略 & 最少要几次?
算法题:
LRU 实现,加了个过期时间,优先剔除过期数据,get 的时候如果过期了就返回 null(加个判断而已,反正满了踢数据直接踢链表头部管他过没过期也不影响)
求一个二叉树的最大宽度(就是找出节点最多的那个层)
面试官看起来挺年轻的,本来签完都开摆了结果大佬给捞了,于是就临时整理了一下看到的字节可能问的问题复习了下,最后面试果然也问了好多网络的玩意。。。字节貌似就是这样的风格诶。
2022-04-28:字节飞二面:70min
自我介绍
实习做了什么,学到了什么?
用过哪些 git 命令
多线程统计数据,有什么方法解决并发问题?(答了加锁,CAS,然后问还有吗???不会了)
说一下垃圾回收算法
你学习这些垃圾回收算法对你来说有什么好处呢?
基于这些回收算法有什么点可以优化性能?能直接操作垃圾回收算法吗?可以通过外部命令去调整吗?
不同垃圾回收器用什么命令选取
为什么要分代回收?相较于标记-清除有什么好处?年轻代回收的时候老年代不管有什么好处?
怎么去设计一个线程池?
为什么要有线程池这种东西,有什么好处?
讲一下 4 次挥手
说一下并发、并行、异步的区别
Redis 有哪些数据结构
一个请求进来的时候,Redis 怎么找到对应的数据的?
Redis 集群的时候怎么存放数据?我要扩容怎么办?(寄,没学分布式那块的东西,不会)
算法:
写一个快排
长度 n 的数组,划分成 m 个子集,要求每个子集的和相等,求最大的 m
快排太久没复习写炸了,等于号加不加永远记不住写哪个,但是 u1s1 真不想背快排板子。。。。
第二题是属实不会诶,只能想到先把 n 分解因数,从大往小了枚举 m ,然后就变成:
判断能否把长度为 n 的数组分解成 m 个子集,要求每份和相等
虽然但是除了暴力还是没想到别的什么好办法,面试官提示了半天结果只是在说第一步的分解,我又傻愣愣没问数据范围。因为只能想到暴力 df s 我觉得肯定不是标解然后就不敢写。。。。于是乎磨磨蹭蹭最后他说时间快到了你想到啥就写啥吧,就只能随便给他写了个暴力了。。。他问我能不能优化?df s 有啥优化手段?我说记忆化之类的,然后他说那你看看你的写法能不能优化一下,然后看我没反应就说时间到了结束了。。。。于是乎,理所当然的寄了~~ 所以说我顶多只能再想到先预处理每个子集的 s u m 然后再 c h ec k 或许会更优一些?
感觉平时写题太依赖数据范围了,不给范围根本想不到怎么写,尤其是最优复杂度 > O ( n l o g n ) 的时候没数据范围参考的话,根本不清楚要什么样的算法。之前携程笔试也是没给范围就不会了。。。可能只是因为太菜了8。。
2022 − 05 − 05 更新: 评论区提醒二面第二按我的思路分解完之后的子问题就是 leetcode 698 哦,然而没给范围我完全没往状压那块想,寄了。题解那边应该挺多的佬们有兴趣自己康康吧,分解 O ( n ) ,状压O ( n ⋅ 2 n ) ,整体复杂度乘一下。。。所以说没啥思路应该先问数据范围的,比啥提示都好用。。。