字节广告部开发一面凉经

刚刚字节一面结束了,虽然准备了2周多,但这两周多感觉都进狗肚子里了。
为了攒个人品,趁热写个面经。

先聊了一下目前的实习工作(非字节实习)
1.java中阻塞队列的原理
2.priorityQueue的原理,增删查的时间复杂度
3.java动态代理
3.幻读
4.覆盖索引,最左匹配原则
5.tcp靠什么防篡改,答校验和
6.校验和是怎么算的?
7.四次挥手
8.http状态码
9.CSRF攻击

算法题:输入是一个链表,节点有三个信息:uid, logintime(登陆时间), logouttime(登出时间),时间单位为秒。求出在线人数的峰值(多个峰值),以及峰值的时间区间
思路:我感觉首先得计算出来各个时间段的人数,首先按照登陆和登出时间来拆分区间,比如(10,20),(15,25)就拆成(10,15),(15,20),(20,25),用一个链表来存储拆分好的区间,具体方法是先将链表按照登陆时间排序,称为链表a,然后在深拷贝一个链表,按照登出时间排序,称为链表b。然后可以用二分法找到最后一个小于等于登陆时间的登出时间。拆分好区间后再看和原本区间的包含关系,拆好的区间被包含一次,就多一个在线人数
这个方法就是我胡思乱想的,感觉不可行,大家看看就得了,哪位大佬有思路还请指教一下

全程45分钟,面试官人超好,答不出来,还会鼓励你。奈何我是个渣,前面的问题就有答不出来的,算法有思路,也不知道对不对
#字节跳动秋招提前批##字节跳动##校招##Java工程师##面经#
全部评论
先按登录时间排序,然后去比较退出时间,找出重叠区间的个数,可以把链表转换为二维数组: [[1,3],[2,5],[3,6],[5,6],[7,9]]  第一个数是登录时间,第二个数是退出时间,大概思路吧。。。。。。。。。
3 回复
分享
发布于 2020-07-12 14:37
登录时间和登出时间统一排序,比如链表有n个节点,排序之后最多有2n-1个区间,循环2n-1个区间,每次遍历一次链表统计这个区间在线人数
3 回复
分享
发布于 2020-07-12 14:52
联想
校招火热招聘中
官网直投
算法题:排序,然后就是个上下车问题了,遍历一遍就行
2 回复
分享
发布于 2020-07-12 15:00
算法题标准差分数组啊😆😆
1 回复
分享
发布于 2020-07-12 16:41
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向
点赞 回复
分享
发布于 2020-07-12 12:51
楼主 算法题思路可以说下嘛
点赞 回复
分享
发布于 2020-07-12 13:14
算法老哥思路是啥
点赞 回复
分享
发布于 2020-07-12 13:22
哪个部门呀
点赞 回复
分享
发布于 2020-07-12 15:14
请问一下你们部门是手撕代码吗?我过段时间也有个字节视频面,贼怕手撕代码。。。
点赞 回复
分享
发布于 2020-07-12 15:25
算法题借鉴一下之前看到的解决思路:定义一个数组 change[24*3600]表示一天中每个时刻的人数变化,遍历链表,在每个登入时刻 change[idx]++,每个登出时刻,change[idx]--,这样就得到了每个时刻相对于上一个时刻的人数变化,然后再定义一个数组 online[24*3600],存储每一个时刻的在线人数,online[0]=0, online[i]=online[i-1]+change[i],这样子就得到了每个时刻的在线人数,然后再遍历online数组即可(本质上有点类似公交车的上下车问题)
点赞 回复
分享
发布于 2020-07-12 15:40
想了个方法 不知道对不对 登入时间从大到小排序 登入时间相同登出时间从小到大排序, 此时求个登出时间登的最大上升子序列 子序列长度就是在线人数?
点赞 回复
分享
发布于 2020-07-12 17:15
Data???
点赞 回复
分享
发布于 2020-07-12 18:42
请问下base哪呢?
点赞 回复
分享
发布于 2020-07-14 10:01

相关推荐

8 38 评论
分享
牛客网
牛客企业服务