字节广告部开发一面凉经

刚刚字节一面结束了,虽然准备了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
算法题:排序,然后就是个上下车问题了,遍历一遍就行
2 回复 分享
发布于 2020-07-12 15:00
算法题标准差分数组啊😆😆
1 回复 分享
发布于 2020-07-12 16:41
登录时间和登出时间统一排序,比如链表有n个节点,排序之后最多有2n-1个区间,循环2n-1个区间,每次遍历一次链表统计这个区间在线人数
3 回复 分享
发布于 2020-07-12 14:52
请问下base哪呢?
点赞 回复 分享
发布于 2020-07-14 10:01
Data???
点赞 回复 分享
发布于 2020-07-12 18:42
想了个方法 不知道对不对 登入时间从大到小排序 登入时间相同登出时间从小到大排序, 此时求个登出时间登的最大上升子序列 子序列长度就是在线人数?
点赞 回复 分享
发布于 2020-07-12 17:15
算法题借鉴一下之前看到的解决思路:定义一个数组 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 15:25
哪个部门呀
点赞 回复 分享
发布于 2020-07-12 15:14
算法老哥思路是啥
点赞 回复 分享
发布于 2020-07-12 13:22
楼主 算法题思路可以说下嘛
点赞 回复 分享
发布于 2020-07-12 13:14
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向
点赞 回复 分享
发布于 2020-07-12 12:51

相关推荐

03-06 16:41
已编辑
长沙理工大学 后端
自我介绍(5分钟)介绍项目(35分钟)几乎每个项目都介绍了一下,面试官确实对我的那个开源很感兴趣,中间还要看我的pr。把开发需求文档给他介绍了一遍。中间问我nett的底层了解吗?我实话实说不了解,只针对netty进行了使用,开发时间太短,没时间再研究底层了。之后问我java和go哪个擅长,我说java er的我基本都会,go这边的话基础不太好,主要侧重于各种框架和业务。无八股一道go语法分析题,我说没搞error,然后这个defer很怪,我没这样用过,我会把res定义在上面,然后dosomething。我感觉这个defer是有问题的 但是我说不上来。```func method(ctx *Context) resType {// 假设 connt 是另一个已定义的变量defer dosomething(res, connt)// 返回某些值res := []int{1}}lru缓存我直接说了我有思路 但是时间不够了,我可能需要很久搞完,然后针对各种复杂度实现和面试官battle了一下。比如o1复杂度获取某个数据。使用双指针+数组+哈希表实现。合并二叉树(2分钟不到)没做过原题,刚搭完dfs,准备改细节了,想着和面试官边聊边做.谁知道面试官说不做了,没时间了,会议室时间要到了。然后我讲了我的思路。结束后自己敲出来了。希望能过 求求了,给个oc,面试完问hr,hr说自己离职了,一周内出结果。绷,幸好周一的时间没离职(引流:字节跳动,腾讯,华为,小红书
查看7道真题和解析
点赞 评论 收藏
分享
03-13 20:32
河海大学 Java
点赞 评论 收藏
分享
评论
8
38
分享

创作者周榜

更多
牛客网
牛客企业服务