收到了字节跳动的面试通知,我是非常慌的,毕竟刚开始学这些知识点才没几天。不过,就算死也要死得体面一点,我便英勇地上了战场。
一面 48min:
算法题:
给一棵二叉树,打印出它的边界节点和叶子节点。
这个还算是比较简单,因为我最近做的题基本都是二叉树的,所以先用递归的方式写了出来。然后面试官问能不能不用递归,我想到之前层次遍历时用到过队列,便用队列实现了。
其实在过程中我多次以为要写不出来了,没想到磕磕绊绊还写出来了。
然后就是提问环节:
- java中动态、静态链接是什么意思?
- 数字签名是个什么?为什么对散列值签名,不对消息直接签名
- java平台无关性是怎么实现的?
- 垃圾回收是什么,怎么实现的?
- 静态内部类的特点
- StringBuffer与Builder的区别
总的来说,这些问题除了第一个不懂之外,别的都还能说个七八分,所以一面就侥幸过了。
二面 65min
二面真的是不堪回首的回忆,先是给了一个算法题,给出一个字符串的全排列。我记得曾经在leetcode上做过,不过,啊啊,早就忘了。
然后失败,面试官又给了第二个,螺旋打印数组,巧了,这个我也做过,不过也忘了。怎么就,怎么就不长记性呢?
算法题就这么如期的挂掉了。后面的问题问的也不再是我的知识储备的内容了,简单的来说,就不只是单纯的问概念了,而是更加深入,不会只问一些面试常见问题。
- volitale、Syschronized、Threadlocal的区别
- 写一条sql语句:查找工资第二名的数据
- java内存模型的理解
- 我如果写一个类,名字和String全类名都一样,会加载成功吗,如果成功了加载的是哪个
- LRU Cache了解过吗
- TCP和UDP的区别(唯一我会的)
好像还问过别的,不过记不太清了。然后就是面试官跟我分享学习的经验,要注重基础,做一个项目,实操中巩固知识。
还推荐了两本书:《Java与模式》、《java编程思想》。
总结
这次面试作为我的第一次面试,也是给了我很多的收获。首先,面试官都是比较和蔼的,而且一般比较健谈(发际线也……)。其次,对于基础还是要多掌握,尤其是写在简历里的,面试官会对着简历问的。
对于知识的了解不能只浮在表面。打好基础才最重要。像Spring、Redis这样的都没有问,其实只要基础打好,这些暂时不会也问题不大。
还有,最重要的一点,数据结构与算法,非常重要!!
coding过不了,别的都白瞎
好了,继续好好学习,天天向上!