华为的hr面
询问我的个人职业规划,之前完全没准备,发了几秒钟的呆后回答说找家公司先干着
百度的二面
很厉害的面试官,尝试了5,6个方向来考察我,但是没有一个方向的回答令他满意
1.Java的类加载过程
2.TCP/IP协议有几层,路由器工作在那一层
蘑菇街
很nice的面试官,面完我之后跟我说:如果你是本科生我就让你过了,但是你是研究生,对你有更高的期望,希望你这几个月好好看书,明年春招的时候,欢迎你再次应聘
1.100W个三维向量,如何从中找出和指定向量距离最近的向量?
我想了几分钟没有结果,面试官最后告诉我说用kd-tree,我立刻反应过来了,因为我以前帮同学写过这个代码
其实如果能把这个问题转换一下,变成:三维空间中100W个点,找到与给定点距离最近的点。那我应该就能反应过来,使用3D图像处理里的八叉树
2. 使用Java的时候,如果会大量产生快速死亡的小对象,那么会频繁触发GC降低性能,问如何改进?
我第一反应是使用对象池,但是面试官表示这个思路不好,具体实现的时候会有很多dirty work
考虑再三没有更好的办法,面试官给的关键词是DirectByteBuffer,回头看了一下大概是在C Heap而不是Java Heap里分配内存,节省了开销
3. 最后还给我列了几个关键词希望我能认真研究一下
hadoop/kafka/spark/hbase/spring
实话说很感谢这个面试官,但是我当时感到失望心情非常低落(手上一个offer也没有),没有谢谢他,现在想起来有些歉意
大众点评
二面的面试官喜欢问项目,但是我实在是没做过什么比较好看的项目,
然后又问我读了这么多技术书籍,在读书的过程中有什么收获吗?我随便回答了几句,他并不满意
问了十分钟,就让我走了
中国电信IT研发中心
很少见的二对一的面试
我原以为中国电信是只用IOE的,没想到一面面试官居然抓着我简历上写的“通读Redis源码”这一条使劲问,失敬了
二面还要调查家庭背景,父母姊妹是干嘛的一阵猛问
美团
连续三面,从下午三点到六点,最后一面的时候我已经快要饿晕了,但是最后拿到了offer,一切都是值得的
一面
1.自我介绍的时候我说我熟悉数据结构,然后面试官立刻让我介绍一下红黑树的特点,当时我就尿了
2.在纸上写代码,找出给定的字符串中连续重复子串的最大长度与重复的字符,很简单的代码
3. 写个联合查询的SQL语句,我不会
4. 进程间通信有哪些方式,如果要传递较大量的数据,用哪种方式最好?
二面
1.在纸上写代码,找出一个长度为M的无序数组的头N大的元素,第一反应是用堆排序,面试官笑着让我想想有没有更好的思路,我突然想起以前在算法导论上看到的一种类似于快排的算法,平均时间复杂度是O(M),跟面试官描述了一下思路后他表示满意,要我在纸上把代码写出来,我尝试着写了一半然后放弃了
2. 看到我简历上写着“通读过Redis源码”,先让我介绍一下Redis的特点,然后开始问I/O多路复用,阻塞非阻塞,异步非异步的区别,然而我什么都不知道,他建议我了解一下NIO/AIO/BIO
三面
1. 在纸上写代码,有一个已经排序的数组,其中可能有重复的元素,给定一个输入,要求找出这个输入在数组中的区间
改进的二分,但是我手写代码的功力太差了,写了半天才勉强写出来
2. 实现一个LRU Cache
3. 职业规划
前几天手上一个offer都没有,被面试官各种鄙视的时候,心情非常沮丧,想到自己为了找工作提前几个月花力气看的书写的代码,似乎都白费了
然后面试回来的路上听到一段歌词,眼泪都掉下来了
一天宛如一年
一年宛如一天任时光流转我还是我一遍用了千遍千遍只为一遍当回忆久远初心始现我做了那么多改变只是为了我心中不变默默地深爱着你无论相见不相见我做了那么多改变只是为了我心中不变我多想你看见
滴滴出行
一面
要求在纸上写出大整数相乘,思路非常明确,用数组模拟每一步的乘法运算,中间注意进位处理即可
之前写过好几次,但是这次居然写得非常乱七八糟
二面
要求在纸上写出N进制数的减法
跟一面的题目类似,也是用数组模拟减法操作,由于这是N进制的数,所以具体操作需要格外注意
而且减数/被减数/计算结果可能是负数,这是需要特别注意的
我只写了个大概,细节绝对是错的,实话说,我自己都不满意于我自己的表现
但是,面试官居然放我过了
三面
面试官是个中年人,感觉像是高层
1.单链表逆序,经典的面试题目,但是他妈的我又没写清楚,我真是服了我自己了
2.数百万的key-value pair,用c语言实现一个数据结构存放这些数据,并且支持并发的增删改查
我一开始说这基本就是一个数据库了,如果内存有限的话,可以用b+数在硬盘上持久化这些数据,这样可以实现高效率的增删改查
面试官补充说内存足够大,我就说这个可以直接用stl中的map容器来存放这些数据,但是不知道map是不是线程安全的,接着直言我对c语言不是很熟悉,如果是用Java的话我会采用ConcurrentHashMap来解决这个问题,在c语言中应该也能采用类似的思路,锁分段什么的
面试官又补充说要保持读取的高可用性,即使读取到脏数据也无所谓,我只好再度补充说可以在锁分段的基础上加入Copy-on-Write的思路,这样就可以在低的写入并发的情况下做到读取无等待
实话说我不是很明白面试官具体想问我什么,现在感觉也许是看到我在简历上写“通读过Redis源码”,他想知道我是否真的读过,也许我把Redis中的字典的实现,和Redis用单线程配合I/O多路复用实现高并发的大致原理跟他讲解一下,他会感觉满意吧
3.设计一个高并发的web服务器,需要注意什么
我真是把我知道的东西全都说上了,什么I/O多路复用,磁盘缓存,多进程/多线程/单线程轮询,鬼扯了起码五分钟,不知道他感觉如何,反正我是有种黔驴技穷的赶脚
我自己感觉面试的过程简直是展示了自己是有多么的愚蠢,但是,竟然过了!!!
鹅妹子嘤!