面试复盘|字节 客户端 等HR面

一面:
TCP 与 UDP 的区别、三次握手、四次挥手?
2MSL 是什么?为什么要有 2MSL ?
HTTP 怎么发起请求?(我觉得是想问输入网址后发生的一系列事情)
HTTPS 怎么解决 HTTP 存在的问题?
对称加密和非对称加密有什么区别?各了解什么相关的加密算法?挑一个细讲
讲讲虚拟存储器?页的大小如果太大有什么影响?太小呢?
Java GC 怎么判定对象可回收?了解什么垃圾收集器?垃圾回收算法?

二面:
线程调度算法有哪些?
时间片如果设置得太大或者太小会有什么影响?
进程和线程的区别?进程中哪些资源是线程共享的,哪些是线程私有的?详细说说(................)
Java 如何实现线程安全的 i++?有多少种方式?
volatile 是什么?有什么应用场景?
synchronized 和 ReentrantLock 有什么区别?
ReentrantLock 具体怎么实现线程同步?AQS?
可重入锁是什么?ReentrantLock的应用场景有哪些?
synchronized 修饰静态方法和非静态方法有什么区别?
Java 的线程池除了核心线程数之外还有什么哪些重要的影响因素?(这块复习的不熟,死亡.........)
线程池的整个运行过程讲一下?(磕磕绊绊,哎)
Java 四大引用?分别的应用场景是哪些?

三面:
了解一下个人情况
是否可以提前实习

算法题1:复杂一点的两数之和
给定一个正整数数组和一个整数 target,寻找数组中两个之和可以等于 target 的数的下标,并且要求返回所有可能组合的数的下标,其中正整数数组的元素有可能重复
楼主思考的时候,考虑到几种测试用例:

①[1,2,4,8,9,1,2],target=3

②[1,2,4,8,9,1,3],target=3

③[2,2,2,2,2,2],target=4

④[3,1,2,4,2],target=9

⑤[4,3,7,5,9],target=2

⑥[1,2,6,8,3,5],target=7
牛客的大佬们如果有什么好思路来切入这道题,恳请在评论区留下你的思路或者代码,一起学习进步!

算法题2:互换礼物
假如班里有n个同学,每个同学都要提供一份礼物,然后对所有的礼物重新分配给每一位同学,有以下要求:
①每个同学提供的礼物最后不能分配给自己
②每个同学只拿一份礼物
③例如:
0->6
1->4
2->1
···········
n-1->8
设计一个分配算法,使得分配的方案能够符合以上要求
我的理解:是将 0~n-1 这 n 个数进行分配,输出一个这 n 个数乱序的数组,并且每个数组元素不等于它的下标,但是考虑的方法始终有些瑕疵、欠缺。如果有什么更好的解决这道题的方法或者思路,恳请能在评论区留下你的思路或者代码,一起学习进步!

继续了解一下个人情况,然后开始问一些计算机基础问题

Spring IOC、依赖注入讲一下(简历上的东西一定要会啊.....)
数据库了解什么,讲一下索引的作用,聚簇索引,B树和B+树有什么区别,索引还可以用什么数据结构来承担
了解什么设计模式,单例模式你经常怎么写
volatile 为什么可以保证重排序,哪几步重排序会出现问题,两次检验会有什么效果?
对 MVC 有什么了解?有没有了解过 MVVM、MVP 这些开发模式
反问

面试总结:整个流程下来,一二三面的难度是 基础和进阶的比例在变小,问的问题越来越注重深度与自己的思考,在三面的算法题中面试官更是希望候选人能够尽可能地思考得全面,没有说一定要个最优解法,但在这个过程中就是希望你能够想得周全,边界什么的要搞清楚。字节的面试体验感觉很好,面试官更像是一个同学在讨论面试问题

讨论:三面的算法题我依然没有能够思考到比较全面的思路,看看牛客的大佬们有没有更加完善一些的解决思路,欢迎你在评论区留言展示你的想法或者代码!

#面试复盘##字节跳动##面经#
全部评论
收到OC邮件了!
2 回复 分享
发布于 2021-09-15 16:59
复杂的两数之和可以使用一个HashMap<Integer,ArrayList<Integer>>来保存数组中的值和索引,key是值,value是索引,然后遍历数组,如果HashMap.containsKey(target-nums[i])==false,就将值和索引添加到hashmap中,如果map中存在相同的key,就把索引添加到对应的arraylist中,如果没有就直接添加即可。如果HashMap.containsKey(target-nums[i])==true,就将key为target-nums[i]所对应的arraylist中的值与i进行一一匹配加入结果集即可,然后再将键值对加入hashmap中,遍历完就得到所有可能的下标组合。 交换礼物的话如果就那两个条件的话,我觉得 判断一下n为奇数还是偶数,如果是偶数,直接reverse一下就好了,如果是奇数,第一个人和第二个人交换礼物,然后剔除第一个人,剩下的n-1个人reverse一下不就行了吗
1 回复 分享
发布于 2021-10-06 19:03
哪个部门
点赞 回复 分享
发布于 2021-09-12 23:49
那个互换礼物我是这么想的,可以先进行一个随机分组,分成两组,这里可以使用一个随机生成一个0-1的随机数,小于0.5的是一组,大于0.5的是二组。分组概率相等的话,如果整体是偶数,分完以后应该两组人数是一样的,直接对位交换礼物。如果整体是奇数,吗对位交换到最后的时候会剩下三个人,这三个人做一个轮转交换。
点赞 回复 分享
发布于 2021-09-14 14:23
几号面的?
点赞 回复 分享
发布于 2021-09-17 00:27

相关推荐

希望各位大哥分享一下自己的看法,对于机器人行业确实不太了解
绝顶但不聪明:如果是机器人相关岗位,优先优必选(专门***器人的),其他岗位选小米
投递小米集团等公司10个岗位 > 牛客解忧铺 牛客在线求职答疑中心
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
4 21 评论
分享
牛客网
牛客企业服务