实习 面试总结

前言

从3月9号到现在总共投了三家,分别是阿里-菜鸟网络、蘑菇街、华为。昨天到蘑菇街现场面完了最后两场,总算停歇下来。不管结果怎么样,面试的经历都需要好好复盘,想想有哪些方面需要再提升,方便以后秋招回顾。()括号中为面试时回答的简略概述。

阿里-菜鸟网络 (已拿offer)

3.9投的简历,3.11收到内推老哥的简历面,3.20电话一面(你面试部门的leader),4.4现场二面(大部门P9的面试官)、交叉面(其他部门的P9的面试官)、HR面。

整体的流程下来,最大的感受就是面完后等待结果的日子,真的不好受。而且因为阿里有海量的简历,所以你的面试间隔一两个星期都是正常的,这个等待的过程也是很煎熬的,一个销售电话进来,也是接起来,一句你好….

所以我觉得还是要摆在心态,可以再面阿里之前,先找其他的公司来来积累经验,还有就是牛客、年级群上看到的那种招聘帖子最好也不要投过去,因为人太多了,这意味着竞争压力也随之增大。

更新2019.5.1

昨晚大概十一点左右,收到了阿里的意愿书,整个流程差不多都快两个月了,还好没有白等。

简历面

记得3.7号左右,在年级群上看到一个阿里秋招提前批的通告,以为不是实习,所以就填了一下个人信息,两天后一个电话打进来,说是阿里的,让我把简历发给他,要给我做一个面试…. 一脸楞X… 还想先拿其他公司来试试水,再来面阿里的。

当时没有一点面试经历,所以在表述上有很多问题,比如语速过快,逻辑不清楚…. 不过面试官还是比较亲和,让我在回答之前,先组织一下….

自我介绍

set的如何判断值是否有重复(不是很清楚…,实际上考察的是set的内部数据结构HashMap

聊一下GC(可达性分析、引用计数器 , GC算法,GC垃圾收集器)

G1 和 CMS的区别(G1和CMS应用场景、CMS会产生浮动垃圾,G1整体采用了整理,局部采用复制)

守护线程了解吗?(垃圾回收线程)

如果用户线程结束了,守护线程还会执行吗?(不是很清楚…)

线程同步的方式(wait/notify ,Synchronized)

进程和线程通信方式(信号量、管道)

什么是临界区?(多个线程竞争的同一块代码块或者资源)

Spring涉及到的设计模式(工厂、单例、代理)

Spring IOC/AOP (控制反转,面向切面编程)

实际有用过Spring项目吗?(社科联项目申报)

如果频繁发生Full GC你要怎么排查?(一开始回答使用DumpOOM,但是实际上DumpOOM是用来解决内存溢出,应该通过GC日志文件查看)

GC日志怎么阅读?(不是很清楚…)

如何知道当前GC是否是full GC,full GC的日志在哪(使用jstat命令…正确答案应该使用printDetailGC

悲观锁、乐观锁(Synchronized、CAS)

rehash什么时候发生,会有什么问题(线程不安全)

如果查看Linux的隐藏文件(ls -al)

如何求根号3的值,精确到后五位,不能使用任何类(0.0001的靠近…. 很蠢的方法)

100首歌,设计一个随机播放算法,使得每首歌都能被播放一次

10个文件,每个文件1G大小,计算字符出现次数最大的前十个(应该要先使用hash,再来局部统计,最后整体统计)

日常反问(1.问了一下为什么不是秋招,而是实习…. 2.这次会影响到后面秋招吗?)

面完之后感觉不是很好,在想可能阿里的征途就这么结束了,后来才知道这个是简历面,只是一个内退人的筛选过程。

电话一面

距离大概简历面大概10天左右,收到了一面的电话面试。面试官还是比较会循循善诱的,流程比较舒服。

自我介绍

博客看的人多吗?(不是很多…只是来记录一下自己的学习过程).

为什么要报考杭电,为什么不考浙工大(难道面试官是浙工大的?!! 先跨一波浙工大再说)

聊项目

推荐算法是如何优化的,如何来验证的(word2vec,相似性任务、类比任务)

在整个项目团队中,给自己打一个分数

实际项目有没有使用到多线程

List有哪些实现(ArrayList、LinkList)

ArrayList的内部数据结构,如何做扩容?(数组,到达阈值*2)

要做一个队列要使用ArrayList还是LinkList(考虑节点的出入操作)

说一个你研究比较透彻的源码(RocketMQ内存映射、零拷贝)

有对比过其他的MQ吗?为什么要研究RocketMQ?(kafka,想要多了解阿里系的产品)

有写过例子来验证RocketMQ的内存映射的高性能吗?(没有…)

MySQL的存储引擎,有哪些差异(Myisam 、 InnoDB、memory)

InnoDB的底层数据结构(B+树, 聚簇索引、非聚簇索引)

数据库行溢出了怎么办?varchar溢出?(不是很清楚…)

数据库表中最大量有多少?有多少行数据?存储了什么数据(40G,3.8亿)

链表反转(三个指针,面试官想要让我说出递归来做)

有面过其他公司吗?(还没有…)

日常反问(1.刚刚表述有没有需要改进的地方 2.还有下一面的面试机会吗?3.总共有几次面试?)

现场二面

二面的面试官,给人一种很严肃的感觉,刚刚看到有种心里一沉的感觉…. 一进来也不让我自我介绍,直接给了一道生产者消费者的问题,五到十分钟写完…. 五分钟写完就开始面试了,不过交流的过程还是蛮愉快的。(时间比较久了,记得不多了)

自我介绍

聊项目

RPC的流程说一下(JDK反射、动态代理、Zookeeper服务查询注册、Netty通信)

RPC写了多少行代码(大概500行把,他说大概100行就可以写一个….)

如何解决服务器缓慢的问题?内存溢出怎么解决(JVM调优,+DumpOnOutOfMemory,MAT分析)

MySQL索引(B+树B树区别、簇聚索引和非簇聚索引)

日常反问(1.刚刚表述有没有需要改进的 2.简历需要有哪些变动 3.有下一面的机会吗?)

现场交叉面

交叉面的面试官,留着长长的头发,给人一看就是做技术的那种,而且语速比较快,一个问题问完,马上会接着一个问题抛出来,感觉是要给面试的人一点压力吧。

自我介绍

聊项目,你做了哪些优化?(推荐算法优化)

推荐算法改进的思路(word2vec聊一波 )

为什么要写RPC框架?有用到生产环境中吗?和其他RPC比较有什么优点?(纯粹技术热爱,写着玩,并没有什么优点)

自己写的RPC需要有哪些改进?(JDK序列化,Zookeeper做集群)

什么是序列化?(JVM对象到网络传输之间的转化过程)

ConcurrentHashMap的实现(1.7和1.8的不同来回答)

为什么要使用Synchronized(synchronized在1.6已经有了优化,性能不差)

volatile原理,平时有用到过吗?(可见性、防止重排序)

聊了一下博客、github,问是自己写的还是复制的(原著的话是自己写的,复制的话,会标明转载)

Hadoop有了解吗?(数据处理的有过实践)

Rocket消息是推还是拉?(不是很清楚…)

Rocket的源码讲一讲(内存映射、IO优化)

面向对象编程的准则(不是很清楚…)

平时写代码有什么习惯(注释,驼峰…)

平时的开发环境(IDE + Windows + JDK1.8)

职业规划

日常反问(1.刚刚表述有没有需要改进的 2.简历需要有哪些变动 3.有下一面的机会吗?)

HR面

HR是个姐姐,很亲和,时间有点久了记得已经不多了。

自我介绍

有投过其他的公司吗?

了解过菜鸟网络吗?

为什么要选择菜鸟网络?

你觉得你和985/211的学生怎么样?

家庭情况

职业规划

实习时间

日常反问(1.刚刚表述有哪些需要改进的地方 2.什么时候会有通知)

蘑菇街(已拿offer)

4.14投的简历,4.15收到简历完善通知,4.18现场一面,4.25现场二面以及HR面,总体来说效率是比较快的。

更新2019.5.5

晚上收到蘑菇街的offer,其实蘑菇街的工作环境还是特别的好,技术栈也比较全,但是还是想去大厂学习。

现场一面

面试官的花名好像叫做**,总体来说面试体验还是不错的,只是HR好像安排错了时间,本应该一天走完的流程,需要多跑一趟。(蘑菇街的小姐姐是真的多… 工作环境也是不错)

自我介绍

RPC框架画一下(自己写的I_RPC框架,感兴趣可以到我github上指点一下)

RPC和Http的区别?(RPC有更多的高级特性,如负载均衡、服务注册等。Http需要和搭配其他组件)

自己写的RPC有哪些可以改进的?(Zookeeper用etcd代替,JDK序列化使用Protobuf替代)

实现这个RPC的难点在哪?多久完成的?(没什么难点… ,学习过程是一个难点)

用过哪些设计模式(代理、单例、工厂)

聊一下你对Spring的看法(IOC、AOP)

聊一下多线程,实际中有没有用过(线程池)

聊一下GC(GC算法、GC收集器)

说一下RocketMQ的源码,IO部分的详细说一下(内存映射、零拷贝、追加写替换随机写)

实际当中有处理过内存溢出的问题吗?运行环境出问题如何排除?(加dumpOnOutOfMemory ,MAT分析)

推荐项目上的优化(word2vec的改进思路)

为什么要用Redis?非关系型数据库和关系型数据库的区别?(缓存加速查询,NoSQL是基于k-v存储的,关系型支持更复杂的查询语句)

聊了一下博客

日常反问(1.简历哪里需要改动的 2.部门负责哪块技术 3.还有机会下一轮面试吗)

针对第反问中的一问,面试官给我的建议是在简历控制到一页的情况下,尽量的丰富项目经历,可能有些项目并没有什么技术难点或者没什么参与的,可以一笔带过

现场二面

面试官的花名好像叫做**… 有点东西。 找了一个咖啡厅进行了面试,面试官人很和善、亲和。整体聊下来感觉挺好的。

自我介绍

RPC有什么改进的地方,难点在哪?(Zookeeper用etcd代替,JDK序列化使用Protobuf替代。学习的过程觉得是难点,需要更多的去了解高性能的一些组件,然后不断的去完善这个项目)

聊项目技术、背景、难点(word2vec改进)

场景题:你认为淘宝在哪方面最容易出现性能上的问题?你要怎么解决?(IO应该是会比较吃性能。借鉴RocketMQ,使用追加写代替随机写,内存映射)

场景题:高并发如何来解决?(熔断+消息中间件+MyCAT)

分表分库的思路(根据字段的查询热度进行垂直分割,数据不能进行分割可以再考虑水平分割)

如何接触到netty和Zookeeper的?(Netty是从《如何写一个自己的Tomcat》上接触的,ZK是平时看博客接触的)

想要做哪方面的技术?(中间件)

如果是做技术开发能接受吗?(可以..)

日常反问(1蘑菇街的技术栈 2简历需要变动的地方 3还有下一轮面试吗)

针对最后的反问时,我问面试官简历哪里需要做些变动?面试官的意思简历上的某某系统在他们眼里并没有什么质感,因为这些某某系统可以是从网上的课程拷贝、或者培训机构的项目,所以反而希望能够看到大家自己的一些东西,比如自己写一个RPC框架就不错。

HR面

HR面是一个姐姐,面试的过程有很多是她的在讲,比如蘑菇街的背景、理念等。过程也比较舒服,总体来说还是不错的体验。

自我介绍

了解过蘑菇街吗?有下载过来玩过吗?(卖女装的…)

家庭情况

聊一下ACM的经历

优缺点

实习时间(HR表示实习时间过短不太好)

日常反问(1.就我刚刚的回答进行评价 2.什么时候有通知)

华为(offer call)

华为是4.11号投递的简历,4.16号邀请了在线笔试,4.25的现场测评,4.28的现场一二面。华为面试过程让人有点迷,一些问题让我不知道该怎么回答,面试的时间也都比较短,没有很深入的去挖掘你的知识面。

更新2019.5.17

下午收到华为的offer call,HR询问了入职时间,但是我和她表示签了其他公司的意愿书了,应该把offer先拿到手的,这样好像秋招有直通车…难受

现场一面

一面的面试官挺乐呵,一直对着笑。就是有些问题感觉拿捏不准,不知道如何去表达什么….

自我介绍

介绍了一下他的部门

RPC流程画一下

MySQL的备份(binlog)

Netty是怎么启动的?(怎么启动的?!! 难道我要说右键run吗… 于是回答不知道)

学习Netty多久了?

地铁最优解,如何使得换成线路最少,站点最少?对应的数据结构画一下

现场二面

二面的老哥看着很年轻,比较好说话的那种。过程轻松愉快。

自我介绍

聊项目(感觉word2vec还真的能聊,每个面试官都聊了一遍….)

为什么不用ES(历史原因,也没有到需要更换的场景)

RPC写了多久

推荐项目写了多少行代码

平时喜欢干什么(唱跳rap篮球…. 写博客、打篮球)

职业规划

日常反问(1.评价一下刚刚的表现 2.简历修改建议 3.什么时候有通知)