记这个下午之某度面试

今天下午参加了某度某部门的校招面试,在此做下总结,以补齐盲区和供之后参考。
首先,经过昨天半个上午加一个下午加晚上加今天上午的猛烈复习,还是有点效果的。我把我能会的比较基础的东西大致看了一遍,不过还是发现了一些问题,我觉得挺好的,因为提前批招聘刚刚开始;在面试中我也被面了好几个不是很懂的问题以及一些知识盲区,下面开始总结:
(1)在复习过程中,印象最深的就是《剑指offer》中还有几道题不是很熟练,然后在慕课网上学习的项目还有一点没有搞透,还有数据库方面的遗忘程度很大,redis也都忘了,网络协议有待加强,多消费者和生产者问题,还有IO、NIO、Spring等都没来得及复习。
(2)在面试过程也遇到了一些问题,影响最为严重的就是Redis和Linux操作系统原理,Redis中那个:当在多个服务器添加一个新的服务器后,如何进行对数据进行整理,我当时想的使用hash的方法进行分配,但是之前的数据肯定要迁移,然后怎么处理呢?第二个linux操作系统原理是我的弱项,这个比如说那个调用命令ls之后,操作系统里面会进行什么操作。下面细细总结开来:
一)一面的时候,是一个冷冷的面试官,进行了下自我介绍,巴拉巴拉,然后让我讲了下我的实验室的项目,巴拉巴拉,本来就很水的的项目让我说的好像也不够明朗,因为比较冷门,大家都不懂,我也不知道怎么说过的。后来问了一下这个项目的意义,我也不知道是怎么说的,我也不知道有什么意义,编了遍感觉也算靠谱。再接着就开始面我技术问题了,印象最深刻的就是:
(a)容器,当时我就懵了,我没明白这个概念,后来面试官说了我才知道,原来是集合,也是醉了,他问我有没有用过线程安全的容器,我第一反应是AQS,也是汗颜,张口来了个ReetrantLock。后来又重新补充了一下安全的容器类,这个肯定没有说全,之后再做一下补充好了。后又来问:ArrayList怎么能够实现线程安全的操作,这是个问题,明天我得查一查;
(b)Linux系统中使用ls命令式,Linux系统内部会发生些什么?使用进程或线程来说明,我当时使用了用户态和内核态来解释的,具体还不太清楚。
(c)怎么实现一个聊天室系统,每个人都能看到所有发的消息,我回答的是观察者模式,但是具体怎么做,我说的也不是很清楚,通过socket的方式进行通信,让服务器存储一个Map或者kay-value值,当并发量过大的时候,会出现一些问题,我说数据过多、服务器给客户端发送消息过多等,我说把服务器进行集群,我说通过使用hash进行服务器的分配;若已有多个服务器的话,再次添加一个肯定会造成之前的数据不能准确定位,所以怎么办,我一直没相出,后来,三面的时候又遇到类似的了。这个探讨了好多好多,有缓存神马巴拉巴拉的,最后还是没出来。
(d)不知怎么扯出了什么情况下会发生内存泄漏的问题,这个我拿ThreadLocal和线程池进行了一下说明,我得再查一下别的情况下会发生内存泄漏的情况。
后来还写了个程序,反转二叉树,和镜像差不多,很顺利的写下来了,然后就歇了一波。
二)二面的时候有两个面试官,反正知道其中有一个是我们的学长,这两个面试官就比较随和一点了。直接让我说了下我的项目,还是那个实验室的水项目,然后问了我的第二个小项目,
a)如果仓库发生什么超脉了怎么办?当时没明白,好像是是仓库10个货物的话,11个卖的怎么处理吧?不知道,感觉不咋地,貌似是有这个问题,我得思考一下,三面的时候也问到了,怎么对仓库进行处理,这个项目我的重新熟悉一下,而且还有一个模块没有搞完。然后,如果并发量特别大的话,如何处理,我说粗暴的布置多个服务器,然后问我如何进行分,那个模块业务众多,需要单独拿出来,然后我说得看数据库表里的关系,看他们牵扯到的其他表中的字段多不多,然后在这一块进行了简要的分析,巴拉巴拉。

b)第二位面试官开始
在介绍第一个Petri网的时候,突然问我能不能解释一下马尔科夫链,当时我就懵了,我说不能,这是个数学问题,不是我们的重点,汗-_-||,看来得重新复习一下我这个项目的基础知识了,还说能不能介绍一下蒙特卡洛原理,这个我只模模糊糊的说了说,真实的东西,也都忘了。再往后面的都是些基础知识了,刚开始就问起了JVM的内存模型,之后是进程和线程的区别,网络的七层,又提出了一个协程,我也不是很清楚,没听说过,后来又问MySQL中InnoDB和MyIsam的区别,以及事务的特点,Redis数据库满足ACID这个特性吗?这个没答上来。后来让写了一个代码,求解二叉树的某一行的宽度,以层次遍历为基础顺利写出;后来又让我画了TCP三次握手和四次结束的状态图,以及最后的2MSL的等待时间,以及为什么要等待,如果不等待会发生什么事情等等。
三)三面的面试官特别有礼貌,把重点放在了Redis上面,就是把集群后,把三台服务器扩充后会发生什么问题,首先说了hash算法来分配数据,接着会导致原来的缓存对应的服务器不一样,需要做数据迁移,但是数据迁移的时候又会发生访问问题,然后怎么解决呢?一开始我没搞出来,在他的不断提示下,我说了三种,一是日志回滚,而是保存接到的消息延迟处理,三是把数据先写回DB,然后在下次缓存不命中的时候重新读取。也不知道对错,等下次面试前必须搞清楚。而且还问到了仓库处理的那个问题,怎么保证安全性,我说给方法加上锁,具体的早就忘了。按照我的简历把项目里面的每一条都仔仔细细的问了一遍。后来又脱离了我的技术方面,问到怎么证明我的学习能力,平常有什么爱好,团队协作怎么样,家庭情况等等等等吧。
接着,让我回来等待消息。
我舍友被问到的问题有:
大量的数据下,怎么统计每个单词的数量?
DNS使用了什么传输层协议?

某度的某部门的提前批校招总体来说还是挺人性化的,偏于基础,我没有什么实习经验,也没有大的项目经验,但是他们能根据简历情况来对个人定制,不管最后能不能拿到offer,起码是第一次校招面试,经历了这个温柔的进阶,因为之前仅仅面过两次,而且都效果都不好,被挂了。在这里也学到了很多,感觉被温柔的对待了。挺好的。再接再厉吧,总结一个周,再投校招。

猜你喜欢

转载自blog.csdn.net/xuchonghao/article/details/81047940
今日推荐