头条2018.9.22一面与二面与三面凉经
一面
人生第一次视频面,手撕代码名不虚传呀,据说大部分应该是leetcode上的原题,但是我没刷过……
一开始自我介绍,然后手撕代码
第一题
给两个数组(长度可能不等),要求循环输出,如
A=1,2,3
B=A,B,C,D,
就要输出1A2B3C1D2A3B...
这个很简单的,维护两个下标变量ai,bi,自增时取模就行了,如
ai = (ai+1)%A.length
要求输出重复时循环跳出
一开始想到最小公倍数去了,面试官提示从下标考虑,当ai与bi相等且为0的时候跳出就行了
如果数组自己内部有重复,求出重复的部分
如A=1,2,3,1,2,3,1,2,3
就求出1,2,3
凉了呀………………
第二题
求二叉树是否存在和为N的路径
直接递归就行了,后来又要求路径不一定要到叶结点,稍微改一改也就行了……
复杂度
一开始直接就说log(N),当场去世……
面试官让我再考虑一下,发现是O(N),因为最糟的情况下每个结点都要访问一次
其它
针对每个连接维护一个线程,开销很大,如何优化(其实我也不懂,就瞎扯了NIO……)
RESTful简介与优点(优点记不得了呀,就随便说了一下……)
java中Set的种类
总结
有了offer立马颓丧了,之前会的,看过的都忘了……
不过,心态出奇的好,无论什么问题没答上来,都不会慌张……
二面
第一题
求二叉树的最长路径,路径指任意结点到结点之间的最短距离
写成了求深度,凉了呀……
第二题
通过内存的计数器
实现一个限流器
限制请求在每秒1000次以下
维护一个计数器就行了,注意一下同步的问题。当计数器小于一千的时候自增并返回true,否则返回false。
然后用一个线程来每隔1秒就执行一次清零*作。
第三题
有一个单链表,奇数位是升序的,偶数位是降序的,要求进行给它进行排序
1->200->10->120->30->8->88->4
1->4->8->10->30->88->120->200
我用一个栈来装入偶数位,然后遍历奇数位与这个栈进行,循环比较链表结点与栈顶的大小,并进行合并就行了……
三面
三面的难度巨大……
算法题
名人定义:所有人都认识TA,但是TA不认识任何其他人
a [i] [j] = 1, i 认识 j
a [i] [j] = 0, i 不认识 j
a [i] [i] 置空
给定n*n的二维数组,有多少个名人?具体都是谁?
我的思路就是大力出奇迹,遍历美滋滋,结果当场去世……
实际上有技巧的,i 认识 j,则i不是名人,i 不认识 j,则j不是名人,以此可以进行推理
情景题
显示热门评论,按赞数倒序排序,写SQL(当场去世)
select 字段名与select *的区别(索引失效)
索引为什么用B+树而不是二叉树(当场去世)
linux shell中按下ctrl+c会怎么样,为什么?(发送信号使进程退出)
内核态与用户态区别(记不清了,于是balabala…提到了通过系统调用与中断来进入内核态…)
软中断与硬中断(硬中断记得是外设硬件产生,软中断记不得了……)
如何防止密码被hash碰撞攻击(加盐,但是我只记得个名字了,内容与***作忘了……)
为什么扫二维码可以实现登录(妈呀这啥)
凉了呀……
#面经##字节跳动##Java工程师##秋招#
SHEIN希音公司福利 261人发布
