印象比较深刻的几次面试

华为的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多路复用,磁盘缓存,多进程/多线程/单线程轮询,鬼扯了起码五分钟,不知道他感觉如何,反正我是有种黔驴技穷的赶脚

我自己感觉面试的过程简直是展示了自己是有多么的愚蠢,但是,竟然过了!!!

鹅妹子嘤!

原文地址:https://www.cnblogs.com/stevenczp/p/4840395.html