暑期实习 | 字节跳动 | 一二面
字节跳动
一二面面试官对我的评价都一样——基础还行,深挖就不行了,都叫我要多实践加训练量,离二面过了一天了,按字节的效率来说,估计就凉凉了,发一下面试问题求求好运吧
一面
抽象类和接口?
反正就说了个接口必须被实现,其他的也没讲了。
抽象类一定有抽象方法吗?
这个记不太清了,自己回答的啥了。
JMM是什么?
java并发的,没听说过
CAS是什么?
乐观锁,见过,具体操作完了,就说自旋,只说了个跟悲观锁的差别
HashMap说一下
这个倒好,我把HashMap底层实现,线程不安全,扩容和红黑树变化都说了,然后还说了下HashTable和CurrentHashMap说了一遍
ConcurrentHashMap 和 Hashtable 的区别
GG,就说出来CurrentHashMap用segment来锁住(这还是1.8之前的),跟HashTable锁全表有点不一样.
NIO和AIO
只说了来个buffer和selector,具体实现和还有一个建立连接的都忘了
StringBuffer和StringBuilder的区别
StringBuffer线程不安全,StringBuilder线程安全,然后又记不得了。后面查询的时候发现我还说反了StringBuffer是线程安全的,StringBuilder是线程不安全的,因为StringBuffer所有方法都是被syncronized关键字修饰的,真的答的太烂了。
JVM垃圾回收机制
把分代认真的讲了一下,但感觉表诉的不太清楚
可达检测
讲出了GC ROOT,还有怎么去检测,但感觉还是答的一般,淦
7层模型简述一下
这倒还好,把层干嘛的还有协议都说了一遍,但会话层和表示层都没听过说过啊
4次挥手之后还有2MSL是干嘛的?
这个说出来了,但说的有点逻辑不清晰
TCP和UDP的不同
TCP建立连接,UDP不建立连接
ACID是什么
讲的一般
mysql的四层锁级别
只记得第三层锁是什么,可重复读锁,其他锁的名字忘记了,但描述了一下前面的锁用来干嘛,和后面的锁拿来干嘛的
算法,找到字符串次数最多的字母
挺简单的一个,但感觉可能做的有点墨迹,说一下蹦一下。而且当时用的HashMap来遍历保存,然后存一个次数值,最后忘了怎么来遍历HashMap了,只能再遍历一遍字符串然后用set来存放,感觉做的有点蠢了,最后那点操作忘记了HashMap遍历的几种方法了
HashMap的遍历方法:
然后我后面想到了一个更简单的,当时其实也想出来了可能有点急,就是用长度为26的数组来保存就好了,还是保存一个次数max,然后遍历长度为26的数组就可以得到答案了,属实是有点蠢了。
估计没了,感觉每个问题我都能答,但都回答的都不全面且卡壳,难受。
结果还是挺好的, 发现自己准备面试,除了算法要重点注意之外,一些细节的东西还是要明白一点,毕竟如果只能说出一半,总感觉给人一种不熟悉的感觉。最后问面试官有啥不足的时候,面试官给我说叫我回去对底层的东西再多了解,多实践加深印象,所以其实自己还是实践少了的问题。
二面
syncronized
说底层是通过mutex互斥锁解决的
重量级锁和可重入锁
这个答出来了
chmod 777的意思
回答了是可读可写可执行,但忘了是第一个7和第三个7分别指什么
数据库的脏读和幻读
在这里被坑了,说了是幻读和不可重复读,被坑了下
HTTP和HTTPs的区别
上面有,我答出来了,但打了个SSL,然后开始问SSL
SSL的过程
这个真的不了解,把交换锁回答了一下,然后提到了CA证书
CA证书是谁发的
这里就真的G了,真的回答不了,感觉他在深挖我基础
算法
leetcode23合并k个有序数组
写过这个算法,但是暂时忘了归并,写了个暴力,然后问出时间复杂度,然后面试官在引导我递归的写法,我写的来,但是我以为他说更高级,于是就在那里扯了好久才写出来,这里也是很重要的一点,最后总结的时候他说我思路没跟上,估计就是这里G了,如果一开始就能把归并写出来也就没这么多事了,后面还提了一个日志存放的也是这个思路,我知道另一个思路,但是当时说的是红黑树,其实是用优先队列,又没回答的完善,就是在这里感觉面试官对我印象就不算太好了,我感觉没有理解到他的意思。
感觉有两个点吧,一个是他深挖的时候我没有答出来,所以有点减分,然后在最后算法的时候一开始只是暴力的操作,没有立刻想到归并的算法导致他觉得我的训练量不够,然后开始减分,估计就是这里挂了吧,已经一天没给消息了,按照字节的效率感觉就无了,如果最后算法能写好的估计就稳了,还是自己算法当时有点笨了
#字节跳动##实习##面经#