这不仅是一篇面经,更是一份秋招过程指导!

lanqiao 发表了文章 • 0 个评论 • 10 次浏览 • 21 小时前 • 来自相关话题

校招真的是段劳心伤神的经历,我把这一路的体会,写在秋招前,也许能给那些和我一样迷茫过,怀疑过,失落过的人一些帮助。(这篇文章有点长,可能需要点耐心)。 写在前面 首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但 ...查看全部
校招真的是段劳心伤神的经历,我把这一路的体会,写在秋招前,也许能给那些和我一样迷茫过,怀疑过,失落过的人一些帮助。(这篇文章有点长,可能需要点耐心)。

写在前面
首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但我这三个月应该能代表很大一部分人的心路历程:
从无忧无虑也无知的状态,然后遭遇挫败,跌入低谷,连续数天的黑暗,慢慢调整,逼着自己不能松懈,看到改变,收获肯定,分享经历。  
先大概说下自己的面试经历吧详细的面试过程和面试题解析在最后
相关的公司有四类
  • 笔试就挂了的:网易、头条。(对于笔试这个东西我到现在都没太多经验)
网易是第一家参加笔试的,面试会报销费用去总部,所以还是有难度,这个公司呢,内推不内推都要参加笔试。所以笔试要好好准备(当然笔试也不好准备)头条只有四道编程题,一个人做确实难度挺大的,尤其是工程为主,不太专搞算法的同学。笔试过了但因为时间地点原因没去面试的:京东、小米、去哪、携程、招银。这几个公司面试一定要现场,很多都要求去总部,还不报销路费。所以在遇到这种情况时,大家要有选择的安排,毕竟时间和精力都是有限的。
  • 最终参加面试的:
阿里(电话2面,很轻松地就挂了)腾讯(现场2面,很久之后hr电话说要转C++,就只能算了)百度(电话2面+经理面,offer)滴滴(视频2面+现场终面,offer)360 (视频2面+hr面,offer)美团(电话2面+hr面,offer)。阿里呢大家都知道,恨不得把全国学生都面一个遍,对于这种策略我只想说三个字,晚点投(下面会解释)。腾讯的面试体验还是很好的,会在酒店的房间里,安静舒适。只是java的同学可能要被问到很多C++和网络的知识,建议还是提前准备一下。百度内推都是电话面,会在某网站实时写代码,感觉百度的面试官都很不错,给我的体验也很好。内推的时候最好注意下部门,在一个好的部门和边缘部门还是差别很大的。滴滴面试比较晚,外地可以先视频面,最后会有现场面,报销花费。工作体验很不错,内部氛围很好,因为成立时间短业务扩展太快,技术方面正在沉淀期,工作还是比较有挑战性的。360要先笔试,然后可以视频面试。这个公司比较稳定,业务也都很成型,实习的话留用率还是比较高的。美团的话印象比较深,因为我是二月底内推的美团,然后内推没面我,三月正常笔试通过,然后待面试两个多月。估计是补招了才给我打的电话(我都已经准备入职了)。经验就是一定要选一个事业群,最开始选都喜欢的大多是以为这样机会多,相反这样很多部门由于自己的简历池太满而顾不上捞你。还有一投简历就沉的外企:Amazon、FreeWheel(不知道是他们只收北京生源,还是我英文简历写的太烂了)文章最后的面经当然只包括第三种因为笔试这东西真的不好讲,杂七杂八什么题都有,编程题大多人也要看发挥。然后这是我最直观的感受:offer = 心态 * (实力 + 面试技巧) + 缘分运气 我就从左到右说起吧。
  • 心态

其实每个阶段的改变,也都是心态转变的过程,所以首先要说的一点,就是心态。在上面这种公式里,心态作为一个因子存在。没错,心态可以影响你面试的准备,笔试的状态,实力的发挥,可以影响一个面试过程的方方面面。心态崩了,就只剩运气了,offer估计也就走远了。
那怎么调整自己的心态呢?
1、[b]首先是要正视自己的能力。不轻视,不高估。[/b]
不轻视指的是我们都要对自己有信心,毕竟选了这个行业和方向,说句不好听的话,机会那么多,就算你不怎么努力也会有个差不多的offer不是么?千千万万的初中创公司,各种拥有垂直领域稳定份额的二三线公司甚至有些已经上市,除此之外还有银行,投资,金融的IT岗,还有各行各业为了互联网+的策略而扩展的互联网分支(当然像链家这种已经算互联网+传统行业的典范了,我前些天还瞅到了像万达德勤一类的各行业巨头也在招程序开发...)所以啊,要对自己有信心,在这个行业十分缺人的年代里(当然各个层次的公司缺人的标准是不一样的),总不至于会失业吧。
不高估就是要清楚自己的能力范围,不是说期望过高不好,但过高的期望会让你的心理变得脆弱,稍有不顺心态就有崩掉的趋势。因为面试毕竟有太大的偶然性,就算你达到了一定的水平,相应水平的岗位也不是百发百中的,更不要说身边有那么多大神和收割机,天天拿offer拒offer,对心理都是不小的冲击。
2、[b]不要总给自己消极的暗示,心态差了积极调整。[/b]
大多数的人,总暗示自己说什么时间不多了,怎么每天过这么快效率怎么这么低。到笔试了,跟自己说这个算法太难了,肯定做不出来;临到面试了,跟自己说千万别问我linux内核,别问我分布式,问我肯定完;面试过之后,没有结果,就天天想肯定又挂了,唉我怎么这么菜。
如果这一系列的表现形成习惯,那心态这个系数最多0.5,能发挥出来的东西也都打了一半的折扣。凡事都不要太悲观,一个offer没拿到,正常情况是这个失败的经历产生的经验和总结是会让下一次的成功率提高的,千万别因为这些消极的暗示,反而让该有的提高都没有了。
心态差的时候反而要停下你重复而没有效率的工作,去调整一下,可以出去玩一玩,吃吃喝喝,不要把这几个月看得有多么不一样,好像耽搁两小时就要来生再见一样。
3、对于身边的同学,多交流,不比较。
有一些一起准备的好伙伴是件非常好的事情,不仅可以互相督促,而且可以在交流和分享的过程中取长补短。(哪怕是偶尔一起吐吐槽发泄一下也比一个人崩溃要好得多)。但对于每一次面试,只跟自己比就行了,面试的整个过程都是最怕比较的,偶然性大,而且每个人适合的方向和技术栈都不一样,结果不能说明一切问题。如果身边有些收割机,那更不要太在意这些天天拿offer的(尤其是拿一个就跑过来讲一句的,他们也许没有恶意,但他们可能真的想不到这种方式会对别人产生怎样的冲击)。
对自己的水平有个很清楚的认识,并选择自己合适的公司,好好准备自己的笔试、面试,不怕失败,但保证每次面试都有收获和提高,那满意的offer早晚会来。
实力
这里说的实力指的是硬实力,也就是技术上的真实积累(当然产品岗的就是对于产品相关知识的积累),而其实呢软实力在面试过程中也尤为重要(有时候真的要更重要),主要是指和面试官的沟通,对一个问题的阐述方式和表达方式,逻辑思维能力以及的价值观和为人等。
如果你平时有些项目积累,不擅长也从来没有怎么系统地总结过;如果你学习呢不算那么认真刻苦,研究搞得也不算出众,但是你该努力的时候也会努力,可以为了一个好的工作逼自己一把。
那也许下面说的实力和技巧都可以在一定程度上帮到你。(因为我就是这样的情况)
实力怎么能体现出来
这么说是因为很多人其实在这些年的项目或是学习中有一些积累,但是在刚开始面试的时候完全感觉使不出力,就是有种你问的我都能讲上一点,但根本说不清楚的感觉。(往深了问自然是完蛋)
知识面或者或者说技术栈都是有宽度和深度的,我们要做的就是在短时间内提升宽度,抓住以往本身就熟悉或是感兴趣的几个点去深入。
我是认为知识的宽度可以很大程度上决定你能不能通过面试(这里说的宽度并不是简历上了解、知道或者你都没往简历上写,仅仅是听说过的层面修饰的方面,而是写熟悉的那种,通俗地说是可以讲清原理,不涉及横向对比和优化的方面)
一两个点的深度呢在保证你能通过面试的同时(尤其是你的点正好cover了对方部门的技术栈),并且还是影响offer等级的关键因素。(达到足够的深度,不只能说出原理,还能进行横向技术对比,纵向的延伸技术,优劣点及优化,或者在这个点写了几篇很透彻的博文,更厉害的同学甚至有相关的开源项目的参与与贡献)
关于怎么提升宽度和深度可以看下面的积累(其实说真的短期内宽度是好补的,深度确实要看个人,是代价较高,性价比不一定高的一方面,看自己的决定吧)
所以我的建议是,先把宽度提上来,把你能cover的知识点及原理搞懂是第一步。建议对自己之前的项目和技术积累做一个总结和分类(可以参考下面的技术路线),然后对已经了解的方面尽可能延伸,对盲区或是薄弱的地方进行针对性的学习和练习。
当你的知识面覆盖到一定程度的时候,你自然会把他们的联系搞明白,慢慢理解这整个技术体系,在面试的过程中结合表达技巧可以关联起来说各个方面,也就可以很大程度上展现自己的真实实力(更厉害的同学甚至可以有超出自己真实实力的表现。)
 面试中的技巧和经验
 
好好对着自己写的简历一行一行看一遍,这都是你挖的坑,是准备给面试官作为切入点交流的,并不是自己往里跳的。(对每一行都要有足够了解和把握)
面试过程不要紧张,尤其是前几次,建议先从小公司入手锻炼下面试经验
面试方式不同,侧重点不同(无非是电话、视频、现场三种)。
电话面试建议找个人少安静的地方坐着回答,并且建议拿纸笔多做记录多画多写。(当然如果你觉得身边很多朋友可以让你越聊越嗨那也可以,坐着是让你整个节奏慢下来,说话明显更加沉稳,亲身体会过站着走来走去和坐着的区别)
视频面试其实和电话类似,只是可以实时写代码,面试官能看到你的表情。这里还是要放松,如果你比较紧张,可以不直视镜头,好好想问题就是了,因为很多面试官你答得好也会面无表情(因为他们也不常视频,表情都很尴尬),然后你看到他们没表情的表情肯定会受影响。
现场面试,最重要的是和面试官互动了,说几个点:语气要轻松点,多点肢体动作有助表达,多笑;不太好说清的就用笔在纸上画,一遍画一边讲,面试官也会更容易和你交流;如果你可以时不时幽默一下开开玩笑是更好了;见面和离开记得礼貌地握个手说声谢谢。
 面试过程详述
 
下面是面试的详细过程,包含面经:
按时间顺序,详细叙述一下我面试的过程,包括面经和心态的转变:
(括号里是对问题的补充,如果感觉有知识点的盲区,大家正好可以去深入学习一下。这里说一下我投的大多是Java研发岗,所以其他语言的可以忽略java问题)  
首先说一点,复习准备一定要早(当然这是说给19届师弟师妹们听的,嗯你们看到这里已经可以开始复习了),有同学去年暑假剑指offer都刷了一遍,然后我竟然今年3月才买这本书。还有同学前一年冬天就已经去实习了,这种机会也不错。但寒假如果不实习的,一定要进入到学习状态。我准备的就有点晚,寒假完全没看书,真正开始准备,大概是2月中旬号玩了一晚上狼人杀之后。
就是那个时候发现校招就要开始了,然后开始慌了。大概看了一周的书(基本上都是java基础),然后师兄说阿里内推了,心想赶紧投吧要不人家招够了就不招了(后来发现都5月6月了还在招。),然后就慌慌忙忙投了简历。
这里我要说一点最重要的事情一定不要在没有面试经验的情况下先面大厂,或者是你想去的公司。
我是下午三点半在阿里的官网完善的简历,5点电话就过来了。作为一个java coder,阿里是个很好的平台,(当然C++的岗可以好好准备腾讯),一定还是准备充分了再投,你先面的结果很可能是焦急地等一两个月然后被后来准备充分再来面试的人取代
阿里 (二面)
两天各面了一面(投的蚂蚁金服,第一天面的就不太好,第二天又把我捞起来面,并且面完感觉就走远了,但当时却没有reject,这就导致之后一个月一直在流程中,阿里其他事业部的师兄师姐没办法把我的简历提走,最终到要笔试了然后变成了rejected)
那个时候就是处于我所说的无知状态,知识点掌握的不够牢,简历写的乱七八糟,面试经验为零(这应该是我上学以来的第一次面试),面试技巧就更不懂了。
然后当时两次都感觉聊得很差(尤其是聊算法模型的时候都想自爆了),也根本没有记录面经的想法。所以有些问题我都记不起来了,大概说一下吧。
1、hashMap的扩容原理,初始有13个,要怎么new?(达到了负载因子,直接手动>>1)
2、Integer的常量缓存池的问题(-127~128范围有个cache)
3、ConcurrentHashMap的size()怎么做的(并没有完全加锁,而是先乐观的认为不会有写,通过modCount判断是否更改,这个我当时记不清就用了很多可能、大概、应该这种词,事实证明直接说不清楚会更好)
4、Spring的AOP关于拦截private方法一些问题.(细节忘记了,当时答得也不好)
5、项目中数据字典怎么做的缓存,如何做的通信,有没有用什么模块。(说了自己的做法,用的全局的HashMap,然后他会延伸到高并发的场景,分布式缓存怎么做等等,由于没实际操作经验提前也没准备,并且还没有直接说不会,又是用很多模棱两可的语句答得)
6、讲讲你的论文相关的模型吧(这个其实在简历上根本没写,只是写了数学建模的奖,然后面试官就开始问机器学习的算法,很多都是我没准备的,并且我心想我投的也不是算法岗啊。。。所以说对于简历上的每一条一定要熟悉,做足准备,并且遇到简历上没有都扯到的方面,要想办法转移,不要在这耗着
7、讲完算法的问题,面试官很尴尬的说了句,你这自己的研究方向你都搞不清楚吗?我当时预感就差不多走远了。。。
8、其他问题真的太久远了,我当时也没有记面经的习惯,所以就没有了。但是最大的感受是面阿里的时候整个人都是紧张的状态,语速特别快,恨不得把知道的都说出来,没有条理,并且把自己姿态放得特别低,还在楼道不停走来走去。(对,以上说的这几点全都是不应该的,但主要原因还是当时准备太不充分,简历方面的准备以及知识点的积累都不够;另外一点,还是要强调不会的就是不会,千万别说大概是,我觉得吧这种东西,说的不好很容易让面试官认作不懂装懂,虽然你只是很想向面试官表达点什么,哪怕只是积极的态度)
从阿里面完试开始我的心态基本上就崩掉了,对自己极度怀疑,加上今年诸事不顺,心情直接跌到了低谷。然后整个三月基本上都是黑暗的,整个一个月都没再投内推,每天从早晨起来,大多时间就在看书刷题,晚上十点回宿舍躺在床上,还要刷两个小时的面经。一个月下来很少说话,提升肯定是有,但是这个过程,其实完全可以用更好的心态去经历。
然后这段极其黑暗痛苦的日子持续了好几个月,一个师兄想帮我内推百度,因为之前因为没信心也错过了腾讯的内推,就心想要不试一下吧。
百度(三面)
一面 
1、自我介绍,印象最深最费心的项目(这个一套可以提前准备,在某些亮点可以估计抛出等面试官来问)
2、讲讲项目中的爬虫和优化怎么做的,为什么选用jsoup而没有用python的urllib
3、说说你了解的反爬虫措施,和针对异常的处理。
4、那你觉的你来做一个网站要从哪些方面考虑反爬虫。
这里可以提前和学习,即使你真正使用的只是一点,也可以在相关问题上做更深的了解。
1、最简单只分析请求,拦截所有非浏览器的直接请求(可以通过添加伪报头解决);查看refer页做防盗链接(可以改refer项);基于用户行为的策略,同一ip相似请求判定(代理或ip池,或间隔请求解决);基于用户session的策略(模拟多用户登录解决);封装前端数据,用js渲染生成(通过探取和模拟异步ajax请求解决);对ajax请求进行加密等等方法。
2、讲讲项目中怎么实现的充值,锁的机制和事务注解,如何保证了事务的一致性。
3、spring层面做事务和数据库层面做的区别,各自实现方式。
4、聊了事务的传播性和隔离级别,问了mysql的默认隔离级别(可重复读)
5、spring中事务传播性怎么配置(xml方式和注解方式,还有关于savepoint的使用)
6、算法:O(1)删除执行链表结点,做分析(其实是要指出剑指offer中那个直接copy值的方法的缺陷和隐患)
7、算法:二叉树的最长距离(递归的思想)
二面
1、聊项目(这次是针对项目中的加密算法和安全性做了阐述,大概20分钟吧,之前爬虫那个例子已经说了项目亮点要怎么准备了,这里我就不多说了)
2、详细聊了聊spring的IOC和AOP思想
3、关于AOP在spring的应用(比如事务,通知,aspectJ,slf4j的原理,和log4j的对比)
4、关于jdk代理和cglib第三方代理(说出对接口代理和子类继承的区别)
5、用的什么数据库,Mysql。
6、最大的数据量多大,用了索引没有,怎么用的(聊了前缀索引,对于varchar类型的值,又聊了聊char,varchar,text,blob的关系和区别)。
7、为什么索引不能随便用,什么时候用(什么时候失效,什么时候最高效)。
8、如何达到索引开销和性能的平衡,用了一个表去举例。(方法就是,根据情境看经常做的查询是哪些,然后依次是什么查询条件,保证最高效索引的同时,也保证索引不失效,避免无效开销,并且根据show profile和explain功能进行对比分析)
9、数据库用了缓存没有,讲讲redis的理解(用作缓存,队列,也可做存储)。
10、redis是单线程还是多线程的,举个例子(做计数器,rank排行榜)
11、讲讲hbase的原理,CloumnFamily包含哪些,region什么情况做分割,对于版本号这个第四维度的使用方式(一般默认三个版本)等。
12、让我等消息,说经理会联系我。
三面 
1、经理面其实更加放松,不只是技术方面,还有生活,性格多方面,感觉是个技术+hr的综合面
2、聊家庭,家乡,工作意愿,爱好等等(聊了十几分钟,感觉都很不错,然后之后的面试也就很轻松了,基本是我在讲他在听)
3、讲了讲项目的设计,包括异常的处理,数据库设计,通信模型的设计。
4、讲讲你理解的JVM吧(从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏等等吧)
5、然后说了下部门的技术栈和部门介绍,说了部门可能没有留用的hc,问我介不介意(当时还没offer当然说不介意只是希望去学习)
6、然后就说把我简历锁了,之后会给我发offer。
其实到现在我都很感谢百度,虽然最后因为部门和留用hc的原因没有去,但是这次面试收获最大的就是信心。并且经理电话里就给了口头offer,这个让我悬了一个多月的心一下子就放下来了,接下来的几天乃至之后的面试整个人都是放松的状态。(真的很难形容,这种转变就在这一个电话的前后)
所以,其实大家也早晚会有这一天,没必要一直那么紧张的状态,太痛苦了。(虽然我知道这种话说得简单),另外一点就是三月份确实有了很大的提高,这个告诉我们,该逼自己的时候还是要狠心一点。
360(三面)
有了信心或者说有一个offer之后,你就会越来越顺利,从这之后的每次面试都会有不同程度的收获。360的流程是走得最顺利的,笔试+面试,三次面试一天完成,但是360的面经可能写得稍微简单一点,因为很多知识点在后面的面试中也出现了,就没有做过多解释,腾讯滴滴美团的面经要详细一些。
一面 
1、自我介绍加项目
2、线程池如何优化的爬虫,数据规模
3、网络时延如何处理
4、同名影片如何选取,有没有更好的方式。
5、反爬虫的原理,从低级到高级说一下,分别如何应对
6、收获了什么
7、线程进程区别
8、说下资源方面的区别,共享,不共享
9、共享的具体哪些资源
10、jvm内存模型
11、堆区的特点
12、数据库左连接右连接,场景
13、给200个200个数的数组,找到最大的200个
14、git 常用的操作,git rebase和git merge区别
15、分布式数据库怎么调用
16、linux常用命令,查看内存,查看磁盘使用率
二面  
1、聊项目,介绍下背景,怎么谈的
2、印象最深的模块及解决,其他项目呢,跟着老师做的,还有简历上没写的项目
3、项目经验还可以那基础怎么样自己觉得,
4、说下jvm吧你知道的,中间会问
5、jvm详细如下
6、内存模型
7、垃圾回收
8、分代及回收算法
9、哪些作为gc root
10、收集器的特点分类
11、类加载机制和双亲委派模型
12、几个加载器
13、tomcat类加载有什么不同,说加载顺序并不是双亲模型,具体顺序说一下
14、并发注意什么,线程实现同步的方式,通信
15、几种同步的区别
16、悲观锁乐观锁,底层怎么实现的,越详细越好
17、单例模式的特点,几种实现,容易引发的问题
18、如何防止内存泄露,哪些会容易造成
19、jvm调优如何检查内存泄露,如何优化gc参数
20、写sql  查询带日期多次考试成绩表中,每个学生的每门课最高成绩,日期要准确
21、分别用having子句写和用子查询写
22、写代码 旋转数组中查找某一个值
三面 
这是唯一一篇hr面经,因为我只面过这一次hr,其他的三面要么是技术,要么只是打个电话说说情况,还没问问题就挂了电话(比如腾讯的)。
1、讲一下项目怎么接的,怎么跟甲方沟通,遇到的最大问题,怎么克服的
2、自己的项目和老师的项目和安排怎么协调。
3、平时有什么爱好,怎么安排自己的时间
4、摄影都去哪拍,喜欢什么运动,什么时候运动
5、为什么选我们部门,其他部门你怎么看
6、我们是做移动端后台的,喜欢玩手机吗
7、说说常用的app平时怎么用,频率
8、以后会不会创业,为什么
9、以后的规划,职业技术和生活两方面
hr面没有太多经验,个人生活爱好这类我感觉就是放轻松聊,规划方向这些可以自己提前准备准备,但是比如创业,offer(之前说过了),价值观一类的问题,其实你也不知道对方想要什么样的回答,干脆随缘吧。
腾讯 (二面)
腾讯的面试有一点印象很深,很考察思维能力,经常会有一些意想不到的问题,或者智力题。挺有意思。
一面 
1、上来看了我的简历问我会不会C++,我心想虽然学过,但是好几年不写,还是说不会吧,然后面试官很好,就不问了。
2、hashmap底层结构画一下,手写代码做一个url解析器,用正则方式和hashMap的数据结构。
3、识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)
4、自己实现http response响应头的结构及解析,用buffer(写个伪代码)
5、resp头中都有什么(主要考察http相关知识)
6、海量数据找到出现次数最多的100个(内存不足的时候可以先做hash分片,最后多路merge,每次操作可以用hashMap计数,也可以自己做hash函数计数)
7、redis底层实现,zset数据结构(问到了SkipList跳表这种结构)
8、jvm内存模型,分代,cpu100% 怎么排查(我以为问Jconsole的使用,其实是想问linux性能监测和调优)
9、用int值表示ip如何做(刚好32位bit一对一映射),写个伪代码做transfer
10、nio模型说一下
11、selector中的wakeup什么含义(这个答得不是很好)
12、select poll epoll (linux内核相关的知识)
13、arraylist.sort怎么实现的(这个可以看看TimSort的思想)
14、怎么看待java跟c++(说下区别和自己的感受)
15、能实习多久(这个好说)
16、去深圳工作怎么看(这个真没想过,不过当时说也可以吧)
二面
二面其实就两个大问题,但一直往很深的地方问。
1、100亿个数找最大1000个(说了分片,用堆,再归并)
2、问你确定吗?(我一想是最大的1000个不是出现次数最多的,其实是可以顺序读取,还是用堆实现)
3、有什么缺点,分布不均匀(说一下堆的复杂度由来)
4、有没有其他思路(用hash散列,计数排序)
5、这个更慢,还有更快的吗(我心想我平时就都是答得堆啊,怎么这次还有更快的?)
6、然后讲了基于partition的划分思想(找到第k个开始partition,在左边就在右面递归,在右面就在左边递归,最后确定partition出最大的k个)
7、这种思想了解了,但最坏情况太差,不稳定,还有更快的吗
8、是不是要用概率统计学,抽样估计?
9、说下思想。。
10、不够精确,还有又精确又稳定的吗?
11、那又给你一个数,你怎么快速告诉我是不是在这100亿个数中?
12、这个我知道有可能是想问Bloom Filter,但是具体到hash函数去几个怎么算,怎么判断误差等细节,我也记不太清了,就说了说思想。
然后进入第二个问题:
1、一个进程最多申请多大空间(看机器cpu的处理位数看情况)‘
2、怎么保证进程间数据的安全?线程呢?
3、安全方面有没有做过一些研究?
4、登录验证怎么做的,为什么用md5,有没有改进(+salt使md5库难解出),微信用的什么方式你知道吗?你想想应该用什么方式?(这里可能是问SSO单点登录的原理吧,可以讲讲SSO JWT token等技术的原理,这个也是我实习之后了解到的,当时答得一般)
5、那说到通信安全,怎么保证http的安全性,幂等性,回调同一个会话怎么标识不同请求,不同会话怎么区分(这个每个问题都画图叙述了下)
6、TCP 3次握手和timewait讲一下原理
7、讲一下滑动窗口,饱和了怎么处理
8、http安全吗?https说一下?
9、get和post请求
10、linux怎么查看网络状态(vmstat)
11、查看udp的性能,udp端口多少,什么时候用udp?
12、为什么tcp不行?
13、qq里哪些用的tcp哪些用udp?分别针对每种情况说一下为什么?
可以看到腾讯还是很爱问网络通信、大数据处理的(当然C、C++也很爱问,只不过我说了别问,他们就真没问,当然你做java的也不要期望他们会问你多少java问题)
然后当时并没有hr面,我心想应该是挂了,但是微信的状态又迟迟没挂,结果到了一个月之后五月底我都回家准备入职了(绝对又是补招的备胎),然后打电话问问个人情况(也没说是不是准备给offer),问可不可以去深圳,转C++方向。
当时也有比较好的机会了,并且实习转岗,如果不确定能留下,绝对是不建议做的一件事,所以就实话实说了。
滴滴新锐(三面)
 
1、说说你对现有Web开发框架的理解(从各个层入手横向对比优缺点,印象中说了SpringMVC和Struts,mybatis和hibernate及jpa)
2、mybatis和hibernate各自的缓存原理和比较,hibernate的一级二级和查询缓存,还有针对缓存的miss率,置换策略,容量设置和性能的平衡问了自己的理解。
3、要你设计的话,如何实现一个线程池(就讲线程池的原理,从初始线程数,核心线程数,然后到任务队列,满了继续到最大线程数,再满了到饱和策略handler,饱和策略一般有哪几种,基本上要理解ThreadPoolExcuter的构造方法那几个参数)
4、synchronized关键字,实现原理(和Lock对比着说,说到各自的优缺点,synchronized从最初性能差到jdk高版本后的锁膨胀机制,大大提高性能,再说底层实现,Lock的乐观锁机制,通过AQS队列同步器,调用了unsafe的CAS操作,CAS函数的参数及意义;同时可以说说synchronized底层原理,jvm层的moniter监视器,对于方法级和代码块级,互斥原理的不同,+1-1可重入的原理等)
5、算法:手写一个ArrayList类,实现add,remove,等基本的方法(主要考扩容的原理和实现,重点写出扩容机制以及扩容时的copy过程)
6、然后让对这个ArrayList进行改进,使之可以应对并发的场景
7、算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。
二面
1、说说你认为项目中技术最薄弱的一个地方(答了IO网络监控和通信模块,短连接性能太差)
2、举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)
3、NIO的原理,jdk中有哪些工具和类去实现,如何实现(selector和channel的用法),真的好用吗?还可以用什么?(面试官应该是想问netty,因为没有实际用过,只能给他讲了netty的原理)
4、那来说说AIO吧,和NIO什么区别(对异步的理解),AIO在工程中如何实现的?(大概说了下ajax的回调函数),又问回调函数具体是怎么实现的(传递函数指针)。
5、然后借着异步IO想问消息队列,讲了一下几种模型和原理。(面试中没有用过没关系,只要你懂原理还是可以跟面试官讲,起码可以证明你是爱学习的)
6、项目中非技术上的困难(和甲方沟通需求,没有规范化的项目设计,需求变更太频繁等),问了我解决的方法还有以后希望怎么改进。(变相问互联网公司里面各个team以及需求方是如何合作和分工的)
7、讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)
8、三种实现上有什么区别(还好看过点源码,其实前两种是一个意思,都是通过反射的方式用aop思想实现,可以消除对spring的依赖;接口方式是直接调用afterPropertiesSet方法,效率更高点。spring加载bean时先判断接口方式,再执行配置注解方式)
9、算法题,一个先减后增的数组,查找目标值。(这里并不是查找最值,也不是剑指offer上的旋转数组,但是思想上也可以用二分的方式)
10、算法题,两个大数求和,要按高到低位的输入,实时输出结果的对应位,空间O,时间O(n),不借助工具类。(要考虑实时的进位标识,以及多个9之后的连续进位标识。
两面完了电话让去参加新锐的现场终面,很有诚意地报销了所有的花销。新锐的三面还是有难度,基本上围着算法在问。
三面 
1算法:int范围的随机数的阶乘编码实现。(这个题如果直接按最简单的算法题肯定是不行的)
2、首先考虑要用字符串做运算(因为中间数太大了,只有String能保存,当然你可以借助BigInteger或BigDecimal类去辅助实现)。
3、阶乘直接计算代价太大,循环太多,考虑设计中间缓存。(正常算复杂度太高,本身就是阶乘级的,所以正常想到用时间换空间)
4、只用空间换时间的话缓存也不能覆盖全部,如果把所有的中间值保存,空间是eb级别,不现实。(这里就要达到一个空间和时间复杂度的平衡点)
5、存部分中间值用部分空间换取时间,达到空间复杂度和时间复杂度的最优平衡。(开始说的二分做分割存储之后改为等间隔做分隔存储,间隔选取多长为好?我觉得要首先确定空间复杂度的接受极限,然后尽可能减小时间复杂度,因为空间复杂度是可以有预估值的,而时间复杂度当然我们是希望约小越好的)
(这里说一下,我并不是一开始都想到了,只是面试官一直在提示我思路,给我时间思考,没有否定过我)
1、因为头一次手写白板,返回类型有错误,面试官说你这个编译器会提示什么?
2、又问了异常体系,checked unchecked虚拟机原理怎么做。
3、解释下iaas.paas.saas和之间的关系,外呼接口和服务怎么调用的。
4、数据库主从备和读写分离原理,ibatis怎么配置。(这个只讲了数据库层面的原理,比如监听线程,主机和从机的同步方式等,但是具体代码层面的配置,由于没亲自做过,就说不太知道。)
5、算法,股票最长增长区间,优化
6、算法,最长递增子序列,一个dp数组一个max数组,最优情况
这个面试官应该是面试过程中遇到最nice的一个,也是我现在的老大。其实面试除了自身的因素也有面试官的因素,一个好的面试官不会随便地否定和质疑你(当然有专门压力面的),而是可以让你在放松的环境下,挖掘你真正对于一个方面的深度和理解。
最后的十几分钟他并没有问我问题,只是在跟我聊天,他跟我说不管是哪个公司,真正的发展还是跟部门的方向和氛围有关系,选择的时候不要只看公司,做的业务部门方向和leader才是该去了解和考虑的。
作为应届生很多时候不那么了解,这就要靠我们(指面试官)多去了解你想发展的方向。然后聊了很多成长路径和规划的事。
真正实习到现在一个多月,深深觉得面试就是面试,很多知识和题目都是可以准备的,而工作中面对各种情况解决问题的能力和方式才是更重要的。为了面试准备了很多,工作了发现要学的东西更多,我们真的还有很长的路要走。
美团(三面)
一面 
1、java基础,从头到尾问了个遍,都是大家准备的,但是也挺深的,包括:
2、hashMap,红黑树处理冲突,jdk7和jdk8有什么区别
3、JUC相关的集合,ConcurrentHashMap jdk7和jdk8的区别,Collections.sort函数jdk7 和 jdk8 分别怎么实现的。(总感觉这个面试官在某段时间肯定纠结过两个版本)
4、CopyOnWriteList底层是什么,适用的情况,vector的特点,实现的是List接口吗。
5、并发的问题,线程间通信三种方式
6、锁的膨胀过程,Synchronized和Lock的区别,底层的monitor实现和unsafe类的CAS函数,参数表示什么,寄存器cpu如何做)
7、volatile cpu和寄存器层面是怎么实现的。
8、线程池构造函数参数,各种类型的预设池各自的特点,ForkJoinPool是怎么实现的,多线程等等问了一个遍。
9、为什么匿名内部类的变量必须用final修饰,编译器为什么要这么做,否则会出现什么问题
数据库:
1、索引的分类。
2、主键索引和普通索引的区别,组合索引怎么用会失效。
3、索引的前缀匹配的原理,从B树的结构上具体分析一下。
4、聚集索引在底层怎么实现的,数据和关键字是怎么存的。
5、组合索引和唯一性索引在底层实现上的区别(这个是整个一面感觉答得不好的一个问题,不太明白面试官想问啥)
6、sql的优化策略,慢查询日志怎么操作,参数含义。
7、explain 每个列代表什么含义(关于优化级别 ref 和 all,什么时候应该用到index却没用到,关于extra列出现了usetempory 和 filesort分别的原因和如何着手优化等)
8、show profile 怎么使用。
二面
1、一个url到页面全过程(让我能说多详细说多详细,最好从OSI七层的每一层去扩展)
2、http的请求头格式(这个真的记不太清了,只说了几个有印象的标志位)
3、getpost区别,post可不可以用url的方式传参。
4、说到了url有最大长度,就问长度有限制是get的原因还是url的原因,为什么长度会有限制,是http数据包的头的字段原因还是内容字段的原因,详细说明。(在他一步步追问下答了个差不多)
5、关于幂等性的详细介绍。
6、幂等性是http层面的问题吗,还是服务器要处理和解决的内容。(就是看你对幂等性的定性是怎么理解的)
7、后台服务器对于一个请求是如何做负载均衡的,有哪些策略,会出现什么样的问题,怎么解决。(说了一致性hash算法,分布式hash的特性,具体的应用场景,又非要问我知不知道这个最早在哪个公司使用的...我说这个真不知道。好像是amazon?)
8、说说http的缺点,无状态,明文传输。
9、那https是怎么做的,如何实现的?ca认证机构。
10、然后问我https ssl tcp三者关系,其中哪些用到了对称加密,哪些用到了非对称加密,非对称加密密钥是如何实现的。(还好我项目中涉及到了一些加密)
11、关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)
12、那客户端是如何认证服务器的真实身份,详细说明一下过程,包括公钥如何申请,哪一层加密哪一层解密。
13、java的优先级队列,如果让你设计一个数据结构实现优先级队列如何做?
14、用TreeMap复杂度太高,有没有更好的方法。
15、hash方法,但是队列不是定长的,如果改变了大小要rehash代价太大,还有什么方法?
16、用堆实现,那每次get put复杂度是多少(lgN)
(思想就是并不一定要按优先级排队列的所有对象,复杂度太高,但每次保证能取最大的就行,剩下的顺序不用保证,用堆调整最为合适)
17、在线编程题:敲一个字串匹配问题,写了常规代码。问kmp的代码思想,最后问了下正则中用的改进后的BM算法。(还有个比较新奇的Sunday算法,有兴趣的同学也可以看一下)
三面 
1、其实写了3面,感觉根本不算面试了,就是随便介绍了下部门,然后商量实习时间(大概补招都这样吧)。因为已经决定去滴滴新锐了,就跟她说可能暑期不能实习,然后说可以秋招再联系。
2、另外美团这家要跟师弟师妹们说一声,投简历一定还是要选事业群的,千万不要选都喜欢,否则就算过了笔试,也会像我这样等两个月大概是补招才会联系到你。
写在最后
 
其实大家可以从这个过程中看出来,随着时间的推进,自己的知识储备和各方面的经验和能力都是上升的。
总结几句
1、对自己要有个定位
2、准备永远都不嫌早不嫌多
3、心态差了及时调整
4、面试挂了及时总结
5、这么多年也该逼自己一把了
一两次甚至一系列的失败并不可拍,成功之后反而没有失败总结得透彻,收获的多。失败的经历会让你不断提升能力,成功的经历会让你不断提升信心。而不管成功失败都会提升你的经验,都会有收获。
这不仅是一篇面经,更是一份秋招过程指导!

蚂蚁金服JAVA面经

lanqiao 发表了文章 • 0 个评论 • 32 次浏览 • 3 天前 • 来自相关话题

作者:Danny_chen 目前经历了两轮面试,一场电面,一场线上笔试,明天准备第三场面试,上来给大家分享面经,求明天人品爆发。   第一轮 面试官没有征兆的直接打电话过来,在 ...查看全部
作者:Danny_chen

目前经历了两轮面试,一场电面,一场线上笔试,明天准备第三场面试,上来给大家分享面经,求明天人品爆发。
 

  • 第一轮
    面试官没有征兆的直接打电话过来,在街边面试。问的问题很仔细,有关Java,分布式,算法等几方面。


  • java基础 JVM模型,答stack 区, heap 区 有什么区别,新生代 老生代, 垃圾回收算法,G2,parallel 回收, 线性回收,还有JDK11的ZGC。


  • Java 线程 Java 有什么锁类型?答: 自旋锁,读写锁,CAS操作,CAS的ABA问题,锁膨胀问题。
    分布式系统 微服务架构下,如果有一个订单系统,一个库存系统,怎么保证事务?答: 1 如果是Mysql类型的,利用XA接口,java使用JTA事务。2 可以使用第三方协调者,采用二阶段提交的方法去解决分布式事务, 协调者先发信息给两个数据库,叫他们锁定资源,进行本地事务操作,发送结果回协调者,如果都OK,则commit,如果不行,就回滚。 追问,二阶段提交有什么缺点? 答:效率不够高,因为在资源锁定的时候,订单系统不能接受其他请求,业界采用三阶段提交。


  • 讲解Raft算法 有三个角色,follower,candidate,leader。Raft最多能容忍(n-1)/2 的错误,假设系统有三个节点,A B C 一开始都是follower的状态,每一个节点都会倒计时,当倒计时完,就给各个节点发送 信号,争取当 leader。假设A节点最快完成,成为了leader,剩余两个节点就会变成Follower状态,从leader节点读取log文件。


  • 电梯调度算法 如果设计一个算法,如何让用户可以顺利坐到电梯。答:这道题答的不是很好,因为在街上,没有纸笔,而且之前一直没有复习过算法类的题目。直接答,首先判断用户按 上下 按钮的时间,分成两个队列,按时间顺序排列。再将可用的电梯分成两组,一个是up组,一个是down组,up处理上升的电梯,down处理下降的电梯。不知道有没有答对,但是感觉面试官看重的是思路。
    项目经历讲了一下之前做的项目, 一面终。

  •  


二面在半个月后来了。
 

  • 线上笔试
    第一道 两个线程分别打印 1- 100,A 打印偶数, B打印奇数。
    第二道 最长递增子序列的变形,用了暴力法, o(n2),面试官说不行,我说忘记动态规划怎么写了,但是有大概的思路,说了一下。

  •  


三面 一个星期后来,更新
 
二面过后一个星期,三面来了。
 
因为简历上,写了一点区块链的经历,三面面试官是做区块链方向的。中午一点面试到一点四十,在面试过程中,主要是项目讲解,挺细节的,对项目熟悉就行了,最后问了项目缺点在哪,怎么提高之类的。最后面试官说会将情况返回给主面试官,等主面试官决定接下来的流程。
三面过后,下午三点的时候,主面试官打电话约晚上九点面试,从九点半面到十点半,整个过程很广。一开始自我介绍,对公司的了解,项目组的了解。技术主要是 基本的数据结构,Java hashmap JDK 1.8 什么时候会用红黑树,红黑树跟AVL区别,为什么hashmap 不安全。Spark DAG 调度过程,宽依赖窄依赖,Kafka 复制算法, 分组怎么确保有序,什么时候用kafka,Kafka跟RabbitMQ区别。算法题,从一亿个数取第K个大的数,这道题没有答好,面试官指出算法中存在的问题,感觉面试官主要看你思路。面试官问怎么写好一个方法,说了一堆设计方法,单元测试,压力测试,balabala。技术完以后,问怎么学习技术,怎么分配学习和生活的比例。最后问了技术中最自豪的一件事。
 
面完已经好累了,没有想结果怎样,直接睡了。
 
Good luck! 
 

秋招简单分享

lanqiao 发表了文章 • 0 个评论 • 28 次浏览 • 2018-10-30 16:37 • 来自相关话题

作者:剑指TI4 坐火车无聊写一手   专业电子,本质是个弱鸡计算机系统和网络一概只知皮毛,找暑期实习被bat弄翻,最后运气好拿到了msra和amazon,可能因为偏向coding。 ...查看全部
作者:剑指TI4


坐火车无聊写一手
 
专业电子,本质是个弱鸡计算机系统和网络一概只知皮毛,找暑期实习被bat弄翻,最后运气好拿到了msra和amazon,可能因为偏向coding。
 
秋招面试
wap提前批技术面不难纯coding全部通过,总监面可能英语拉闸聊的一般,不过报销很效率飞机票买的还是高价。后续可能技术上不错又被捞起来面了一轮总监,不过业务可能比较窄当时不打算去了也就当练英语了,挂。
 
头条北京算法,三面全部是项目加几道题,leetcode 中等偏上难度,感觉整体还比较舒服,可能算法不需要问系统和网络的东西,拿了小sp。
 
阿里ai lab计算机视觉算法,史上最坑,面试官改时间迟到严重,一面项目无问题,二面白板coding题目不难(一小时写了七道)都是些常见链表,快慢指针,dp,写多了确实很容易,然后重点来了,整整两个多月没任何消息,没一个电话,内推hr貌似离职了,催小蜜说帮我催流程,佛了,在我催了五次之后点了已回绝。
 
tx提前批被光子工作室捞了,不想去深圳,被丢池子gg,秋招tx地图捞我太迟了,感觉业务也一般就不去面了。
 
网易游戏面试很晚,而且给人感觉问的很杂,需要招一个体系结构师而不是游戏开发,写了树的后序和简单二分,gg,感觉过去等了半天浪费了时间。
 
商汤算法研究员,感觉很神奇,笔试有事没写结果仍然安排面试,三面都偏聊天,问点项目,全概率,智力题,c艹基础啥的,总监认为我背景不够研究员,毕竟转专业三无,最后加了一面,估计转了研究院rsde,给了大sp。
 
face艹算法工程师,也是rsde吧,五面,体验和安排都比较稳,让人很舒服,就是3次过去比较麻烦,前两面纯工程coding,中两面聊项目cv和coding,最后大佬面很神奇也写了代码聊项目,拿了研究院人脸组offer,感觉大佬很多,薪资估计和商汤差不多。
 
msra转正rsde,两轮rsde一轮research,整体感觉还行,手写题不用debug,问的问题也不关注底层,偏应用,最后一轮aa面被严谨的大佬指出很多吹逼的问题,等待ing。
 
airbnb三轮coding要求debug运行,秒了两轮,一轮心浮气躁debug出问题gg
 
hulu三轮coding也是debug运行,通过等大佬面。
 
intel研究院cv,之前实习的mentor人很好给了return,婉拒了。
 
google pending,本人还是太菜。
 
整体个人感觉面外企和创业公司的安排比较舒服,而且内容更偏实际应用,而不是揪着一个百度一下就能知道的概念不放,coding是关键,这是你吃饭的工具,我秋招一页计算机网络和系统都没看过。。(当然该知道的基础要知道),还是写题性价比高,写多了面多了状态会好,最后刷题不多但写题比较得心应手。
 
工作环境感觉msra hulu airbnb google应该都不错,face艹正式员工看着桌子还不错但人多了就降低了,头条之类的就人更多了。msra整体宽松,可以晚起晚回,上班过去很迟,晚上晚点走就行,和边上的大佬白神吹了几个月牛皮,活能干完能给结果就行。
 
整体薪资而言at今年最顶尖比较高,大部分一般,别的几家年轻公司待遇今年没特别高,初创公司高上天际但担心被大佬虐没投,外企一向靠package,拿到手钱不多。 
 

秋招收获9 个offer,面经分享一波,加油骚年们!

lanqiao 发表了文章 • 0 个评论 • 23 次浏览 • 2018-10-30 15:56 • 来自相关话题

作者:Vampire624   首先,前端,9 offer,不是大佬,好像在周围同学中算是比较多的,可能是因为投递的多吧。比较乱,就按时间这么来吧~ 面试按日期,随意说,时间比较久了,一共32面,能记起多少就多 ...查看全部
作者:Vampire624

 
首先,前端,9 offer,不是大佬,好像在周围同学中算是比较多的,可能是因为投递的多吧。比较乱,就按时间这么来吧~
面试按日期,随意说,时间比较久了,一共32面,能记起多少就多少吧~

 1、宜信(正式offer)

宜信面试是个巧合,就当时没事干去了宣讲会,现场投递了简历,比较幸运可能,没有笔试也给了面试机会。

宜信一面:
1 、手写快排
2、快排的平均,最好,最坏时间复杂度
3、一段js代码,输出
4、项目
5、记不清了后面的。。。

宜信二面:
1、手写二分查找(以及优化)
2、浏览器输入网址,到页面呈现的整个过程
3、跨域方法
4、jsonp原理
5、前端安全
6、记不清了后面的

宜信三面:
1、给了两个栈,和一串数字,实现排序
2、项目
3、实习的收获

2、完美世界(二面跪)
 
完美世界一面(电话):
1、自我介绍
2、html5 语义化标签
3、css3 实现动画的方式
4、translate3D 的作用(拉起硬件加速)
5、vue react 的异同
6、跨域的方式
7、前端优化
8、gulp 和 webpack 的异同
9、webpack打包原理
10、原型链
11、项目

9.13完美世界二面
1、项目
2、一道算法题,判断一个数字是由235的次幂乘积组成
3、js实现一个循环队列
4、cookie存储空间
5、http和https的区别

 3、招银科技

 招银一面(电话):
1、自我介绍
2、cookie和storage的区别
3、浏览器捕获异常的方式
4、js实现异步的方式
5、跨域方法
6、笔试题中实现小球来回移动的动画是如何实现的

9.17 招银二面
1、session说一下
2、cookie的作用
3、cookie禁用的话,其他实现登录方式
4、一段js代码,输出
5、css实现一个三角形
6、手写一个计算字符串中每个字符出现次数的函数

9.17 招银三面
1、项目
2、项目中的收获
3、给出一个项目,需要技术选型
4、前端捕获后端一个接口错误,设计模式
 
4、网易 (正式offer,sp)

网易一面
1、自我介绍
2、手写二分查找
3、为二分查找写测试用例
4、跨域方式
5、浏览器输入网址后的整个过程
6、vue和react的异同
7、xss 和 csrf 是什么
8、如何预防xss
9、es6 新特性
10、记不清了后面的

网易二面
1、什么是深拷贝和浅拷贝
2、vue 如何实现数据的双向绑定
3、react 的如何优化组件更新
4、实例化的vue对象,增加新属性,是否也是双向绑定
5、如何实现数组的拷贝
6、数组有哪些方法不改变原数组
7、reverse方法是否改变原数组,确定改变?(问了我一句确定?这个我很疑惑,难道还能不改变。。。)
8、排序算法有哪些
9、数组的sort方法如何使用
10、数组的sort方法内部是使用哪种排序
11、v8内部为什么使用这样的方式进行排序(22以下归并,以上快排)
12、快排稳定么
13、什么是排序的稳定性
14、es6有哪些特性不熟悉(问我不熟悉,我蒙蔽了,说了个proxy)
15、什么是proxy(提到了元编程)
16、什么是元编程(自己挖的坑)

网易sp加面
1、项目
2、最大的挫折
3、最大的困难
4、优点缺点形容自己
5、实习的收获

5、京东 (正式offer)

京东一面(我觉得面的一般,但是我是最后一个,小哥还是给我通过了)
1、自我介绍
2、vue 的指令
3、 vue如何实现数据的双向绑定
4、给了一张纸 上面三个题 一段js代码,输出
5、es6 新特性
6、说一个你最熟悉的(我说的是promise)
7、react和vue的异同

京东二面
1、自我介绍
2、一道题,让我说下思路,然后再写出来,就是一个多层树状的对象,给定其中一个子属性,找到其父辈和子孙(写了一大堆,后来告诉我想考察我递归,我在那疯狂重复。。。宛如智障)
3、一道题,实现一个列表点击,弹出列表的内容(事件代理,冒泡)
4、addEventListner 的三个参数,最后一个参数 布尔值代表什么?
5、项目简单聊了聊

6、海康威视(正式offer )

海康一面
1、自我介绍
2、项目遇到最大的问题,如何克服解决
3、vue和react的异同
4、实现动画的方式
5、es6新增的数组的方法
6、es6其他新增的特性
7、用过什么css框架,类似ele的UI
8、用过哪些第三方包(webpack的都算,我数了一大堆)
 
7、携程(正式offer)
 
携程一面(就一面,hr面都没有,你敢信?)
1、自我介绍
2、手写一道题,点击列表的,弹出列表的内容
3、跨域方法
4、前端优化
5、CDN如何更新
6、web前端安全
7、手写快排
8、快排的平均时间复杂度
9、tcp和udp的区别
10、osi7层
11、http协议
12、http和https的区别
13、说一些http的状态码
14、mvvm和mvc的区别
 
8、搜狗(口头offer)

搜狗一面
1、自我介绍
2、项目
3、es6新特性说几个
4、跨域
5、cookie和storage的区别
6、http和https的端口
7、什么是ssr
8、一道题,一个模板字符串,给定一个对象,用对象来替换模板字符串的占位符(正则和replace实现)

搜狗二面
1、自我介绍
2、项目
3、react 说几个生命周期的钩子函数
4、写一个简单的react组件
5、vue和react 的异同
6、webpcak的打包原理
7、原型链
8、es6 新特性
9、使用class 写一个继承
10、项目聊了一会

9、美团(正式offer,sp)
 
美团一面
1、自我介绍
2、call、apply、bind的区别
3、手写实现一个bind方法
4、http和https的区别
5、项目
6、掏出手机,打开一个一笔画(类似)的游戏,问如何实现,纯前端(循循善诱,也算是磕磕绊绊的完成了~)

美团二面
1、自我介绍
2、浏览器从输入网址到呈现的过程
3、前端优化
4、cookie和storage的区别
5、设计一个函数,实现随机分配红包,输入红包总额,和红包个数,输出每个红包额

美团三面
1、项目
2、实习的收获
3、有什么想学习的技能
4、数据结构和算法如何?
5、操作系统?(说几个命令,我说,说出来害怕你笑话我,面试官说是不是 cd 和 ls ,啊哈哈哈哈)
6、一个开放题,荒岛,一个信号源在岛上,你在船上,你有指南针,gps,以及一个信号接收器,这个接收器只会在距离信号源近的时候出现+,远的时候出现-,不能上岛,确定信号源的位置
 
10、诺瓦科技(正式offer,加面sp失败)
 
诺瓦一面
1、自我介绍
2、项目
3、跨域
4、vue和react 的区别
5、说几个vue的指令
6、https的端口是
7、前端性能优化
8、后面的想不起来了

诺瓦二面
1、自我介绍
2、项目
3、项目中最大的收获
4、大部分都是围绕项目,实在记不清了

诺瓦CEO面(sp加面,跪,应该是跪在我是非科班,并且只想做前端)
1、自我介绍
2.、项目
3、实习
4、探讨职业规划和对公司的疑问

11、迅雷(二面跪)
 
迅雷一面
1、自我介绍
2、说一下快排的思路
3.、快排的时间复杂度
4、手写实现一个bind函数
5、项目

迅雷二面
1、数组实现copy的方式
2、输入网址看到网页的全过程
3、DNS查询的具体过程
4、实现搜索二叉树
5、什么是堆
6、堆排序的思路
7、说一些es6的新特性
8、手写一个promise(自己实现promise)
9、1000万个数字,随机取掉两个,随机打乱,如何找到它们

这是整个我的全部面试,年初面试腾讯的实习,由于感觉是面试官的问题,让我一直有阴影,感觉是我自己的能力不行还喜欢找客观原因,心里压力巨大,经过我32面的经历(不算实习),我发现,大部分面试官都是正常人,没有问出一些xx问题,所以真心不用担心,就算有也只是一两个,没问题的。

最后就是,实习的作用真的很大,面试关于项目的问题,基本都落在了我在网易时候干的项目,对我自己写的那两个基本没啥问题,没人在意,实际项目还是很重要的,实习经历更是不可多得,要不是选择西安,我会去杭研所的,一定!最后,希望大家都有一个好归宿,祝好!

秋招如戏,江湖再见!

lanqiao 发表了文章 • 0 个评论 • 32 次浏览 • 2018-10-30 15:31 • 来自相关话题

      作者:irish     我的所有互联网面试在九月的倒数第二周全部结束,然后在九月的最后一周开头收到了唯一的一个offer,另外还有两家公司泡在池子里,被捞的机会 ...查看全部
 
 
 
作者:irish

 
 
我的所有互联网面试在九月的倒数第二周全部结束,然后在九月的最后一周开头收到了唯一的一个offer,另外还有两家公司泡在池子里,被捞的机会也很渺茫,所以直接结束秋招了。
本科二本,研究生985通信专业,非科班,由于团队所做项目基本都是软开的,故机缘巧合变成了码农,进校开始做了一年多的Android,发现并没有太大兴趣遂投身前端。当然知道前端需要兴趣驱动,否则与日俱增的新东西很容易让人半途而废。 
 
准备
由于自己考虑做前端已经是研二上期了,而当时的Android项目正好遇到校庆展示加上赶进度结题,所以真正开始学习的时候已经快接近期末了,差不多从12月份开始前端学习之路,由于知道自己起步较晚,要想在第二年9月拿到一个还不错的offer还是有很大难度的,所以从12月开始几乎很少给自己放假,每天几乎8点过到教研室,然后学习到晚上10点左右回宿舍,周末回家基本只待一天(劳逸结合嘛),刚好运气不错的是之前的Android项目12月基本就结题了,可以全心全意投入自己的事情中。
在开始之前,首先我给自己制定了一些计划,比如大概什么时候需要掌握哪些知识,然后需要做一些什么小项目来练手,这样带着目的学习的话就会比较有动力。最开始学习前端几乎都是从HTML/CSS开始的,我是先在网上看了一个8小时的视频,对这些概念有一个基本了解,然后再去w3school挨着看一遍,js的话看了两本,一本是《JavaScript高级程序设计》用来学习,一本是《JavaScript权威指南》用来参考。
由于个人比较看重基础,所以在基础方面花的时间比较多,新框架的话只是在暑假之前看了看vue然后做了一个小项目加深了理解,简单看了一下源码没有做过多的深入了。由于9月有很多笔试,所以在暑假的时候恶补了一下算法,把《剑指offer》大致刷了一遍,这个对后来的笔试面试都是非常有帮助的,不能抱着前端对算法要求不高的心态就不看算法了。

 2 实习 
 个人觉得实习还是要找的,至少今年来说周围实习了的基本都拿到了很不错的offer,当然这只是一个锦上添花的作用,如果像我一样基础都还不扎实的可以考虑先把基础打扎实了等校招。
 
内推
 内推是可以提前收获offer的机会,而且不通过的话校招还有第二次机会,所以需要把握住机会,虽然现在内推大多数都不免笔试了,不过还是应该多尝试一下。之前写的内推的面经,内推的公司全部挂完了,也没有很在意,不过我始终把面试当做一次学习的过程,可以通过不断的面试来弥补自己知识点上的漏洞,同时多面试还能够总结一些面试技巧。
 
 4 校招
 由于我是土生土长的成都人,所以骨子里第一想法都是留成都,成都之外的公司只投了几个名气比较大的,其余都是成都的(后来发现成都我投的也很少,真是不知道自己哪里来的自信能够找到大厂工作),所以校招基本就投了阿里,腾讯,百度,京东,网易,美团,滴滴,还有凑热闹投的一些公司比如招银网络科技,中国银联。然而这些公司的面试大多都集中在了那么十来天的时间,好几天面试面的午饭都没有办法吃,有些时候可能早上七点过出门晚上九点过才能回学校。
 
1)阿里(简历评估挂)
最惨的就是阿里,内推投了忘记做在线编程,然后连面试机会都没有,后来校招笔试的时候在杭州玩,也是水水的做了做然后笔试就挂了,就这样连面经都没有捞到就gg了。
 
2)腾讯(一面挂)
面试的时候看到霸面的人巨多,好像今年霸面技术岗的几乎没有给机会面试,自己运气还是比较好吧。然后一面进去面试官全程冷漠,由于看到我项目时间点都是今年的,所以有点质疑我开发能力之类的,然后我就跟他说研一开始做开发,只是之前做的是Android,然后问了我几个简单的基础题,最后把我挂了,估计还是觉得开发时间太少了吧。
 
3)百度(offer)
百度的面试官给我的感觉是非常好的,从内推到校招,他们问了一些问题后有些可能回答不上来,但是他们会给一个引导或者解释。面百度是需要准备一下算法的,因为前端也会被问到算法题,校招的时候更是深有体会,基本上去就先写一两道算法题,不过都是些比较简单的,稍微刷过题的应该都能够写得出来。
能够拿到百度的offer让我觉得我的运气实在是很好,一面面试官让手写的那些代码基本上都是之前有准备过的题,然后一面面试官还问了好几道笔试中的题,比如topK问题用什么排序,然后写正则表达式给座机号码前面的区号加上括号,由于笔试是编程题没有做出来,所以下来还专门跟同学讨论了一下怎么做。
二面全程就被怼了很多CSS的问题,比如让一个元素不可见有哪些方法,说了几个以后面试官会问还有哪些,后来实在想不起来了然后又在另一个属性上进行深挖,比如position:absolute参考哪个元素定位,然后给了个情况是父元素position:inherit,父父元素position:relative会参考哪个,当时答了个父父,然后面试官问我知道inherit是什么意思吗,我说继承,然后她让我再看看应该参考哪个,然后才反应过来是父元素,后来面试官问了个问题没答上来,然后我说我CSS没有看太多,而且平时都是用的chrome所以兼容性那些也没有怎么遇到(我忘记百度是需要兼顾ie用户的),我说我比较擅长的是原生js,接着又在数组和对象深拷贝这个问题上问了好多问题,就是不断地给情形,问这样改变值以后原来的会不会改变,答了几种场景以后面试官说觉得我基础还是挺好的,当时听到这句话还是有点懵逼的,因为感觉她问的CSS问题都没有答的很满意。
最后让我问问题的时候特意问了一下最近百度关于弃用react的问题,她笑了笑可能是没有想到我会问这种问题吧,然后还是详细的讲了一下,二面完回学校以后刚到教研室就接到了HR电话说二面通过的消息。
三面是在面完美团一面赶过去的,由于两个酒店中间只有3站地铁,所以还好没有冲突,三面唯一感觉比较好的是面试官给出了一道题,当时考虑了两种情况一种算法复杂度O(n^2)一种是O(nlogn)的,在这个问题上跟面试官讨论了很久,然后面试官说他之前都没有考虑到O(nlogn)的情况,我这算是那天人品爆棚了,这个问题应该给我的通过加了不少分,后来面签的时候问了下HR部门果然是三面面试官捞的我。由于只有这一个offer所以打算直接签三方了。
 
4)美团(备胎池)
每一个没有按时开始的公司我的运气都不会太好,美团也不例外,约好的下午三点面试,硬是拖到了三点半才叫我进去,由于五点还有百度三面,考虑了面试时间以后心想如果三点四十还不叫我我就直接去百度了。
美团也是个特别重算法的公司,一面进去就让手写一个算法,没有写出来,只是跟面试官说了一下思路,他说是这个思路啊,但是我打死都想不出来代码怎么写,于是估计拿了个很低的评分,二面第二天早上,上来就问昨天有没有写算法,写出来没有,我说没有,然后又出了一道算法,悲剧地又没有写出来,然后问了我还有哪些亮点(面试官估计也很无奈),然后看我简历写了设计模式,于是让写了一个装饰者模式,写出来了,最后还是把我放进三面了,但评分估计还是最低的。
三面面试官应该对设计那方面特别看重,所以大多数时间也是问的这些问题,由于我看的比较少,自然而然不理想,接着四面,小哥哥是四川德阳的,跟我吹了半天上海比北京好,说南方人可能更愿意去上海,由于我工作地点填的成都,并且不服从调剂,然后四次面试面试官都会问我成都留不了去北京还是上海,由于没有offer最后还是妥协了说去北京,结果面完HR面被通知进入备胎池(待定状态),由于360也是在备胎池里,所以当时还是没有太大的失望。
 
5)京东(二面挂)
京东是我觉得挂的太晚了的一家公司,一面约的9:40,进去的时候是11:30,全程20分钟不到就结束,问了下jQuery和vue应用场景,H5新特性和ES6新特性,就没有太多问题了,然后开始鄙视我没有实习经历,我就跟他说我们实验室研二不放实习,如果可以的话我愿意毕业之前提前到公司实习,他还是一副很不屑的表情,出来很是生气因为没有问什么技术问题,感觉挂定了,结果晚上查状态居然是复试未安排,我觉得真的很莫名其妙,那么短的时间根本没办法考察什么,还过了。
二面就没那么好的运气了,虽然问了一些基础知识,面试时间也有30分钟,但是全程感觉面试官有点水,明明我说过的东西他也不会仔细的听,比如居中问题我开始说了不用CSS3的方法,后来又说了下CSS3可以用哪些,他又问那不用CSS3怎么做呢,我吐血明明刚刚才说了。反正京东的面试体验让我觉得京东是面过的公司最不尊重人的一家公司,面试官的水平也比其他公司有一定差距(当然这可能是只有我遇到的问题)京东作为留成都的一个次佳选择(之前还憧憬着腾讯),也是我秋招所有面试中最后结束的一家,当时看到复试未通过还是挺难过的,毕竟在成都待了二十多年现在要开始北漂生活内心还是有那么一丝遗憾,不过还是自己太菜也没办法怨其他的。
 
6)滴滴(二面挂)
滴滴约的11:30面,结果等到下午1:30才开始面,所以结果显而易见也崩了。投的研发岗-前端方向,一面去手写了两个算法,写出来了,然后让手写了个原型链继承,然后对这个进行优化(第一次遇到,后来憋了半天把借用构造函数用上了,满足面试官的要求)结果前端的东西没怎么问几个那个hr就进来给面试过说时间到了,出来一看都花了一个多小时了。
跟着进去二面,同样手写算法,写出来了,给他解释完了,说我代码有问题,我检查了下边界那些都考虑了说没问题吧,他还是说有问题,僵持了一段时间后放弃了,滴滴二面是最无语的了,那个面试官全程逻辑跳跃,一些我知道的知识点点到即止,但是在有些时候我明确告知这个方向我不熟悉,然后说了我了解哪些他还要继续深挖,结果果不其然出来就挂了。
 
7)招银网络科技(拒了)
这个公司本来是不打算投的,但是听师兄说今年有成都的岗,还专程为了里面有没有前端岗,据说是有专门做前端的科室,于是还是投了一波,但是一面面试官的体验太差了!
进去先让用java手写dijkstra算法,写不出来,开始鄙视我做的东西,说我做的这个轮播图不就是一个一个切换吗,跟他们楼下的一样的,我说是啊淘宝京东不也这样吗,他就说没什么特点,然后好一通鄙视,当时面完出来就很不爽了,又不跟我探讨技术的东西,还要鄙视我,然后面到HR面了问我进去愿不愿意转C++和C#,我说我肯定会先做前端的,后台的话要选我会选java,因为之前做Android有点基础再捡起来没那么难,然后HR就问我为什么不想转C++。
后来过了几天发了短信让提交资料,考虑了下就算拿了offer也不想去,而且进去还要转岗什么的,所以就没有提交资料了。在没有offer的时候这么做现在想想还是有点固执的。
 
5 参考的书籍
 
 《CSS权威指南》
《JavaScript权威指南》
《JavaScript高级程序设计》
《DOM编程艺术》
《jQuery基础教程》
《编程之美》
《剑指offer》
《数据结构与算法》
《HTTP权威指南》
《你不知道的JavaScript》
《ECMAScript6入门》
《深入理解bootstrap》
《JavaScript设计模式与开发实践》
《编写可维护的JavaScript》
《web性能权威指南》
需要说明一下上面的书有一些是我细看并且反复看过好几遍的,比如《JavaScript高级程序设计》、《你不知道的JavaScript》,有一些是浏览了一下然后当参考书用的,比如《JavaScript权威指南》、《HTTP权威指南》,当然学习的东西不光靠这些书,还有很多技术需要通过官方文档来学习的,就没有写了。
 
总结
 找工作是一个实力+运气共同作用的过程,关于这一点,教研室师兄曾经发过一个帖子,我觉得说的很好所以一直收藏着,虽然我秋招结束了也只拿到了一个offer而且还不在成都,不过能够去一个大厂工作自己还是蛮幸运的,当然在前端的学习上也是才入门而已,以后的路还需要更加努力了,最后祝大家早日收获满意的offer。
 
面试中的问题

1)百度校招(一面)
1、ajax流程讲一下
2、了解promise吗,简单说一下
3、手写一个箭头函数如何使用
4、实现一个链式调用
5、写个简单的观察者模式
6、数组去重
7、let和const有什么区别
8、如何判断数据类型,如果遇到null呢
9、写一个正则,要求匹配电话号区号+座机号,并且给区号添加上括号10、mvc,mvp和mvvm的区别
11、笔试题topK用什么排序?(答了堆排序)堆排序时间复杂度,稳定性以及什么是稳定排序
12、对于一个基本有序数组用什么排序比较好?(答了冒泡)冒泡时间复杂度是多少,最好的情况是多少
 
百度校招(二面)
1、手写一个代码,实现输入[a,a,a,b,b,c,a,a]输出[3,0,0,2,0,1,2,0]
2、实现三栏布局,中间200px,两边自适应
3、position有哪些值,定位参考哪一个元素
4、让一个元素不可见的方法有哪些
5、数组深拷贝,浅拷贝,对象深拷贝,浅拷贝
6、webpack路由懒加载
7、es6中异步请求多个数据如何操作
8、现在有哪些公司offer
9、有什么问题问我

百度校招(三面)
1、不同高度的楼靠在一起,宽度相同现在要挂一个广告横幅,不可以超过楼的高度,要让广告横幅面积最大应该怎么挂,复杂度是多少
2、三个箱子装有apple,orange,apple && orange,标签都是错误的,需要拿几次才能判断箱子里装的是什么
3、let和const的区别
4、对象的解构赋值
函数的rest参数
1、SPA优缺点
2、mvc和mvvm的区别,mvvm是为了解决什么
3、箭头函数的作用
4、xss和csrf如何防范
es5和es6有什么区别
1、问项目,问简历
2、项目中有遇到什么难点吗
3、现在有什么offer
4、对全栈怎么看
 
2)腾讯(一面)
1、spa原理,为什么url改变不会刷新页面
2、localStorage大小
3、写个继承,es6继承是如何做到的
4、vue数据绑定
5、如何学习前端
6、es6和es7了解哪些
7、h5了解哪些
8、正则匹配一个网址
9、css3了解哪些
 
3)美团校招(一面)
1、vue源码数据绑定以及diff算法
2、vue中计算属性如何根据data里的值发生改变
3、vdom有什么缺点
4、webpack用过哪些loader
5、看github,看个人网站,问了个angular脏检查是什么
6、exports看代码说输出结果(面试官给我说babel转码的exports和node里的不太一样,没听明白以后有机会试试)
7、let和const的区别
8、箭头函数怎么用
9、localStorage有什么不好的
10、手写算法,求二叉树中两个标记节点之间的最短路径
 
美团校招(二面)
1、无序数组找出所有满足条件的数,这个数比前面的数都大,比后面的数都小
2、js写继承,原型链继承有什么不好的地方
3、手写个简单的mvvm
4、手写装饰者模式
5、看过哪些书,写一下
6、讲一下this绑定
7、http讲一下,缓存策略,etag了解吗
 
美团校招(三面)
1、prototype属性怎么用
2、对跨域安全有什么了解,如何防范
3、看过哪些设计方面的书
4、对UI有什么了解
5、css看过哪些书
6、觉得前端有什么不好的
7、知道哪些复杂的设计模式,应用场景是什么
8、项目中有什么亮点
9、对mvc有什么理解
 
4)京东(一面)
1、jQuery和vue有哪些区别,分别使用场景
2、为什么选择vue
3、h5新特性
4、跨域有哪些方法
5、es6新特性
6、你做前端有什么优势
 
京东(二面)
1、vuex原理
2、项目难点
3、水平垂直居中
4、盒模型
5、数组去重
6、将一个一维数组变为二维数组
7、HTTP状态码知道哪些,他们如何分类的
8、平时如何学习新知识
9、继承是如何实现的
10、怎么看待前端猛增的框架
 
5)滴滴(一面)
1、手写两个算法
2、手写原型链继承
3、对原型链继承进行优化
4、画一下盒模型
 
 滴滴(二面)
1、HTML标签中常用的类名
2、写个原型链继承,如何优化
3、画一下盒模型
4、JSONP的底层实现
5、ajax同步和异步的区别
6、window.onload何时执行,浏览器如何渲染
7、轮播图如何实现
8、linux用过哪些命令,写过哪些shell
9、手写数组归并去重