[干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街

本文转载自:公众号:JANiubilityjava

前言

  以前实习的时候就想着写一篇面经,后来忙就给忘了,如今找完工做了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇诚意之做,但愿能给将来找工做的人一点指引和总结, 也但愿能使你们少走点弯路 , 若是能耐心读完,相信对你会找到你须要的东西。
  先说一下LZ的基本状况,LZ是四川某985学校通讯专业的研究生(非计算机),大学阶段也就学了C语言,根本没想过最后要成为码农。大四才开始学java,研一下开始学android,因此LZ以为本身开始就是一个小白,慢慢成长起来的。android

一,心态

  心态很重要!
  心态很重要!
  心态很重要!
  重要的事情说三遍,这一点我以为是必须放到前面来说。
  找工做以前,有一点你必须清楚,就是找工做是一件看缘分的事情,不是你很牛逼,你就必定能进你想进的公司,都是有一个几率在那。若是你基础好,项目经验足,同时准备充分,那么你拿到offer的几率就会比较高;相反,若是你准备不充分,基础也很差,那么你拿到offer的几率就会比较低,可是你能够多投几家公司,这样拿到offer的概率就要大一点,由于你总有运气好的时候。因此,不要害怕面试,刚开始失败了没什么的,多投多尝试,面多了你就天然能成面霸了。得失心也不要过重,最后每一个人都会有offer的。
  还有一个对待工做的心态,有些人可能以为本身没有动力去找一个好工做。其实你须要明白一件事情,你读了十几二十年的书,为的是什么,最后不就是为了找到一个好工做么。如今到了关键时刻,你为什么不努力一把呢,为何不给本身一个好的将来呢,去一个本身不满意的公司工做,你甘心吗?
  想清楚这一点,我相信大多数人都会有一股干劲了,由于LZ刚刚准备开始找实习的时候,BAT这种公司想都不敢想,以为能进个二线公司就很不错了,后来发现本身不逼本身一把,你真不知道本身有多大能耐,因此请对找工做保持积极与十二分的热情,也请认真对待每一次笔试面试。ios

二,基础

  基础这东西,各个公司都很看重,尤为是BAT这种大公司,他们看中人的潜力,他们舍得花精力去培养,因此基础是重中之重。以前不少人问我,项目经历少怎么办,那就去打牢基础,当你的基础好的发指的时候,你的其余东西都不重要了。
  基础无外乎几部分:语言(C/C++或java),操做系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域。这里面其实有不少东西,各大面试宝典都有列举。
  在这只列举了Android客户端所须要的和我面试中所遇到的知识点,尽可能作到全面,若是你掌握了如下知识点,去面android客户端应该驾轻就熟c++

J2SE基础

  1. 九种基本数据类型的大小,以及他们的封装类。git

  2. Switch可否用string作参数?程序员

  3. equals与==的区别。面试

  4. Object有哪些公用方法?算法

  5. Java的四种引用,强弱软虚,用到的场景。编程

  6. Hashcode的做用。json

  7. ArrayList、LinkedList、Vector的区别。

  8. String、StringBuffer与StringBuilder的区别。

  9. Map、Set、List、Queue、Stack的特色与用法。

  10. HashMap和HashTable的区别。

  11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。

  12. TreeMap、HashMap、LindedHashMap的区别。

  13. Collection包结构,与Collections的区别。

  14. try catch finally,try里有return,finally还执行么?

  15. Excption与Error包结构。OOM你遇到过哪些状况,SOF你遇到过哪些状况。

  16. Java面向对象的三个特征与含义。

  17. Override和Overload的含义去区别。

  18. Interface与abstract类的区别。

  19. Static class 与non static class的区别。

  20. java多态的实现原理。

  21. 实现多线程的两种方法:Thread与Runable。

  22. 线程同步的方法:sychronized、lock、reentrantLock等。

  23. 锁的等级:方法锁、对象锁、类锁。

  24. 写出生产者消费者模式。

  25. ThreadLocal的设计理念与做用。

  26. ThreadPool用法与优点。

  27. Concurrent包里的其余东西:ArrayBlockingQueue、CountDownLatch等等。

  28. wait()和sleep()的区别。

  29. foreach与正常for循环效率对比。

  30. Java IO与NIO。

  31. 反射的做用于原理。

  32. 泛型经常使用特色,List可否转为List。

  33. 解析XML的几种方式的原理与特色:DOM、SAX、PULL。

  34. Java与C++对比。

  35. Java1.7与1.8新特性。

  36. 设计模式:单例、工厂、适配器、责任链、观察者等等。

  37. JNI的使用。

Java里有不少很杂的东西,有时候须要你阅读源码,大多数可能书里面讲的不是太清楚,须要你在网上寻找答案。

推荐书籍:《java核心技术卷I》《Thinking in java》《java并发编程》《effictive java》《大话设计模式》

JVM

  1. 内存模型以及分区,须要详细到每一个区放什么。

  2. 堆里面的分区:Eden,survival from to,老年代,各自的特色。

  3. 对象建立方法,对象的内存分配,对象的访问定位。

  4. GC的两种断定方法:引用计数与引用链。

  5. GC的三种收集方法:标记清除、标记整理、复制算法的原理与特色,分别用在什么地方,若是让你优化收集方法,有什么思路?

  6. GC收集器有哪些?CMS收集器与G1收集器的特色。

  7. Minor GC与Full GC分别在何时发生?

  8. 几种经常使用的内存调试工具:jmap、jstack、jconsole。

  9. 类加载的五个过程:加载、验证、准备、解析、初始化。

  10. 双亲委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。

  11. 分派:静态分派与动态分派。
    JVM过去过来就问了这么些问题,没怎么变,内存模型和GC算法这块问得比较多,能够在网上多找几篇博客来看看。

推荐书籍:《深刻理解java虚拟机》

操做系统

  1. 进程和线程的区别。

  2. 死锁的必要条件,怎么处理死锁。

  3. Window内存管理方式:段存储,页存储,段页存储。

  4. 进程的几种状态。

  5. IPC几种通讯方式。

  6. 什么是虚拟内存。

  7. 虚拟地址、逻辑地址、线性地址、物理地址的区别。

由于是作android的这一块问得比较少一点,还有可能上我简历上没有写操做系统的缘由。

推荐书籍:《深刻理解现代操做系统》

TCP/IP

  1. OSI与TCP/IP各层的结构与功能,都有哪些协议。

  2. TCP与UDP的区别。

  3. TCP报文结构。

  4. TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的做用。

  5. TCP拥塞控制。

  6. TCP滑动窗口与回退N针协议。

  7. Http的报文结构。

  8. Http的状态码含义。

  9. Http request的几种类型。

  10. Http1.1和Http1.0的区别

  11. Http怎么处理长链接。

  12. Cookie与Session的做用于原理。

  13. 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP。

  14. Ping的整个过程。ICMP报文是什么。

  15. C/S模式下使用socket通讯,几个关键函数。

  16. IP地址分类。

  17. 路由器与交换机区别。
    网络其实大致分为两块,一个TCP协议,一个HTTP协议,只要把这两块以及相关协议搞清楚,通常问题不大。

推荐书籍:《TCP/IP协议族》

数据结构与算法

  1. 链表与数组。

  2. 队列和栈,出栈与入栈。

  3. 链表的删除、插入、反向。

  4. 字符串操做。

  5. Hash表的hash函数,冲突解决方法有哪些。

  6. 各类排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定。

  7. 快排的partition函数与归并的Merge函数。

  8. 对冒泡与快排的改进。

  9. 二分查找,与变种二分查找。

  10. 二叉树、B+树、AVL树、红黑树、哈夫曼树。

  11. 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。

  12. 图的BFS与DFS算法,最小生成树prim算法与最短路径Dijkstra算法。

  13. KMP算法。

  14. 排列组合问题。

  15. 动态规划、贪心算法、分治算法。(通常不会问到)

  16. 大数据处理:相似10亿条数据找出最大的1000个数………等等
    算法的话实际上是个重点,由于最后都是要你写代码,因此算法仍是须要花很多时间准备,这里有太多算法题,写不全,个人建议是没事多在OJ上刷刷题(牛客网、leetcode等),剑指offer上的算法要能理解并本身写出来,编程之美也推荐看一看。

推荐书籍:《大话数据结构》《剑指offer》《编程之美》

Android

  1. Activity与Fragment的生命周期。

  2. Acitivty的四中启动模式与特色。

  3. Activity缓存方法。

  4. Service的生命周期,两种启动方法,有什么区别。

  5. 怎么保证service不被杀死。

  6. 广播的两种注册方法,有什么区别。

  7. Intent的使用方法,能够传递哪些数据类型。

  8. ContentProvider使用方法。

  9. Thread、AsycTask、IntentService的使用场景与特色。

  10. 五种布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、TableLayout 各自特色及绘制效率对比。

  11. Android的数据存储形式。

  12. Sqlite的基本操做。

  13. Android中的MVC模式。

  14. Merge、ViewStub的做用。

  15. Json有什么优劣势。

  16. 动画有哪两类,各有什么特色?

  17. Handler、Loop消息队列模型,各部分的做用。

  18. 怎样退出终止App。

  19. Asset目录与res目录的区别。

  20. Android怎么加速启动Activity。

  21. Android内存优化方法:ListView优化,及时关闭资源,图片缓存等等。

  22. Android中弱引用与软引用的应用场景。

  23. Bitmap的四中属性,与每种属性队形的大小。

  24. View与View Group分类。自定义View过程:onMeasure()、onLayout()、onDraw()。

  25. Touch事件分发机制。

  26. Android长链接,怎么处理心跳机制。

  27. Zygote的启动过程。

  28. Android IPC:Binder原理。

  29. 你用过什么框架,是否看过源码,是否知道底层原理。

  30. Android5.0、6.0新特性。

Android的话,可能是一些项目中的实践,使用多了,天然就知道了,还有就是多逛逛一些名人的博客,书上能讲到的东西很少。另外android底层的东西,有时间的话能够多了解一下,加分项。

推荐书籍:《疯狂android讲义》《深刻理解android》其余综合性的书籍也须要阅读,推荐:《程序员面试笔试宝典》《程序员面试金典》。

三,项目

  关于项目,这部分每一个人的所作的项目不一样,因此不能具体的讲。项目再也不与好与很差,在于你会不会包装,有时候一个很low的项目也能包装成比较高大上的项目,多用一些专业名词,突出关键字,能使面试官能比较容易抓住重点。在聊项目的过程当中,其实你的整个介绍应该是有一个大致的逻辑,这个时候是在考验你的表达与叙述能力,因此好好准备很重要。

面试官喜欢问的问题无非就几个点:

  1. XXX(某个比较重要的点)是怎么实现的?

  2. 你在项目中遇到的最大的困难是什么,怎么解决的?

  3. 项目某个部分考虑的不够全面,若是XXXX,你怎么优化?

  4. XXX(一个新功能)须要实现,你有什么思路?

其实你应该可以预料到面试官要问的地方,请提早准备好,若是被问到没有准备到的地方,也没关系张,必定要说出本身的想法,对不对都不是关键,主要是有本身的想法,另外,你应该对你的项目总体框架和你作的部分足够熟悉。

四,其余

你应该问的问题

  面试里,最后面完以后通常面试官都会问你,你有没有什么要问他的。其实这个问题是有考究的,问好了实际上是有加分的,通常不要问薪资,主要应该是:关于公司的、技术和自身成长的。

如下是我常问的几个问题,若是须要能够参考:

  1. 贵公司一贯以XXX著称,能不能说明一下公司这方面的特色?

  2. 贵公司XXX业务发展很好,这是公司发展的重点么?

  3. 对技术和业务怎么看?

  4. 贵公司通常的团队是多大,几我的负责一个产品或者业务?

  5. 贵公司的开发中是否会使用到一些最新技术?

  6. 对新人有没有什么培训,会不会安排导师?

  7. 对Full Stack怎么看?

  8. 你以为我有哪些须要提升的地方?

知识面

除了基础外,你还应该对其余领域的知识有多少有所涉猎。对于你所熟悉的领域,你须要多了解一点新技术与科技前沿,你才能和面试官谈笑风生。

软实力

  什么是软实力,就是你的人际交往、灵活应变能力,在面试过程当中,良好的礼节、流畅的表达、积极的交流其实都是很是重要的。不少公司可能不光看你的技术水平怎么样,而更看重的是你这我的怎么样的。因此在面试过程当中,请保持诚信、积极、乐观、幽默,这样更容易获得公司青睐。

  不少时候咱们都会遇到一个状况,就是面试官的问题我不会,这时候大多数状况下不要立刻说我不会,要懂得牵引,例如面试官问我C++的多态原理,我不懂,但我知道java的,哪我能够向面试官解释说我知道java的,相似的这种能够往相关的地方迁移(可是须要注意的是必定不要不懂装懂,被拆穿了是很尴尬的),意思就是你要尽量的展现本身,表现出你的主动性,向面试官推销本身。

  还有就是遇到智力题的时候,不要什么都不说,面试官其实不是在看你的答案,而是在看你的逻辑思惟,你只要说出你本身的看法,有必定的思考过程就行。

5、 面经

  LZ应聘的职位都是android客户端开发。面经其实说来话长,包括实习的话面过的公司有:CVTE、腾讯、阿里、百度、网易、蘑菇街、小米。最先得追溯到到今年3月份,那时候刚过完年,而后阿里的实习内推就开始了,我基本都没什么准备,就突如其来的接到了人生中第一个面试电话

阿里实习内推一面:

  电话面试, 因为是第一次面试,因此很是紧张,项目都没怎么说清楚。而后面试官就开始问项目细节了,这里我关于一个项目细节和面试官有不一样的见解,面试官说我这样作有问题,而后我说咱们确实是这样作的,并无出什么错,差点和面试官吵起来,最后我仍是妥协了。而后问了我一个怎么对传输的数据加密,我答的很挫,而后面试官就开始鄙视我:你这个基础很差,那个基础很差,那你说说你还有其余什么优点没?Blabla紧张的说了一些…………只面了30分钟不到,而后妥妥的就挂了。

  通过此次面试忽然感受人生的艰辛,几天后咱们教研室的其余同窗陆续开始了面试,他们都很顺利,其中个人室友(单程车票)很顺利的拿到了offer,他是个大神,而后我就压力无比的大。制定了整套复习计划,从早上9点看书看到晚上10点。

  到了3月15号左右有CVTE面试,第一次面试是群面,比较坑,坐了一个小时的车过去群面了5分钟,没什么好说的。

CVTE实习面 :

  在自我介绍和项目后,面试官开始问一些java基础,object有哪些方法?这个还能说了一些。问hashmap有多大,这个当时一脸茫然,还sb的答了一个65535。而后面试官让我写三分钟内写一个二分查找,当时也是第一次手写代码,而且还计时,彻底没经验,最后超时写了出来。中间又问了我一堆基础,都答得不是很完整。最后问我遇到过OOM的状况没有,什么状况下会OOM。这个也没答出来,而后又妥妥的挂了。

  此次经历告诉我,我是缺乏面试经验,和现场写代码的能力,基础还须要多增强。因此我开始各类准备,在一个月的时间里看了四本面试书(程序员面试宝典、java程序员面试宝典、程序员面试笔试宝典、剑指offer),把全部关于数据结构和算法的东西用代码写了一遍。

  而后到了四月初,腾讯来了,我最开始仍是很是向往腾讯的,但就当时那个状况,我对本身不报太大但愿,以为能进BAT这样的顶级公司是个奢侈的梦想。

  腾讯的面试是在一个5星级酒店里面,逼格高大上,感受问的东西也比较多,感受喜欢问智力题,可是我没遇到。

腾讯实习

  1面:50分钟左右, 面试的时候仍是有些紧张的,可是运气好,遇到了一个学校的师兄,他一直叫我没关系张。几个比较关键的问题:死锁的必要条件,怎么解决,java和c++比有什么优点,java同步方法,activity生命周期,中间让我设计了个银行排队系统,我说了一堆。而后让我写了一个计算一个int里面二进制有几个1,而后我用最高效的方法(n=n&n-1)写出来以后,面试官有点意外,还说没见过这么写的,让我跟他解释一下。后面就是拉拉家常,问我对工做地点怎么看,让我对比qq和微信,一面出来以后,面试官让我留意通知,心想是过了,其实发挥的不怎么好。

  就在会学校的路上,都要到学校了,收到了腾讯二面的通知,下午3点。而后我又跑回去二面。

  2面: 二面是一个很严肃的人,看上去就比较资深那种,一直都不笑,后面才知道是手机管家T4的专家。一开始就问我项目里,心跳包是怎么设计的,我项目里并无用心跳,而后只能跟他说没作,问我用json传输数据有什么很差(我只知道用哪想过有什么很差)。又问了http和socket的区别,两个协议哪一个更高效一点,遇到过java内存泄露没有,用过哪些调试java内存工具,java四种引用。多数都是项目上的东西,基础的东西没问太多,而后感受本身答的不是很好,不少都不知道,并且还答错了。其实我感受我应该是过不了的,可是最后我问问题的时候,我让他评价下个人表现,他说很差评价,我本身说了一堆,说在学校里确实见识到的东西比较少,不少东西没考虑全面,而后他表示赞同,和我探讨了一番,我以为最后这个问题给我加了很多分。二面也面了50分钟左右。

  回来后发现个人状态一直没变,而他们二面完了的都到了HR面了,我觉得我已经挂定了,后来在一天晚上12点的时候,惊喜的收到了次日HR面的短信,当晚上几乎高兴得一夜没睡着觉。

  3面(HR): 就是hr面,也就面了十几分钟,聊聊天,问问哪的人,将来什么打算的等等,基本不怎么挂人就不详细写了。

  就这样拿到了人生中第一个实习offer。

  后面找实习的心就放松了,没有复习了。而后到了5月5号,阿里来了。对阿里也只是想去面一面的心态了,由于已经有腾讯的offer了,就没想太多。

阿里

  实习1面: 面过腾讯以后发现本身已经比较淡定了,面试得时候可以比较好的交谈了。这一面也遇到一个比较好的面试官,能很轻松的和他交流。主要的问题是android的:activity的生命周期、activity的四种启动模式(当时忘了一些没答全)、线性布局和相对布局、多线程请求,java GC算法与GC方法,内存模型,有一个比较特别的问题是问我微信的朋友圈怎么设计,而后我把思路跟他说了,其余的就是问了项目相关的了。还问了我一个以为技术深度重要仍是技术宽度重要,一面感受仍是比较基础的。

  实习2面: 这一面就比较虐心,碰到一个阿里云的CTO,一上去项目看都不看,直接问我写过多少行代码,我说至少三、4万行,而后他让我写了两个题:一个找素数,一个递归求阶层,对我也算手下留情(他后来让我同窗写AVL树的插入算法,想一想也是醉了)。后面就各类基础了,java的基础挨个问了一遍,比较关键多线程实现,锁的几种等级等,反射的用法,wait()和sleep()(讨论这个的时候他把我说晕了),Java还好,多数能应付,而后他就开始问c++的了。虽然是基础,可是lz忘了差很少了,什么指针数组和数组指针,虚函数,多态实现(这个我扯到java上了)等等,问了不少,不少都没答上来,而后他说我基础不太好(我想说我简历上写的了解C++,为何要追着我问TT)。

  就这样出来了,原本觉得挂了,后面被通知过了。同窗都只有2面技术面,我竟然多了一面,叫交叉面试,心想这下确定完了。

  实习3面: 这一面遇到了后面我去实习时候的部门boss,人很是好,来的时候走的时候都要和我握手,很是的平易近人。这一面仍是问项目上的一些东西居多,基础就问了个java多线程,各个排序的时间复杂度、思想。技术问了半个小时,后面半个小时就开始各类聊人生了(@_@),我家是哪的,父母干吗的,中学怎么样,大学怎么样,等等,彻底就不像是技术面嘛(后来才知道,我一个同窗一开始来就和他聊人生,还聊过了。再次感叹找工做是看缘分呐)。

  实习4面(HR) :阿里hr比腾讯hr面专业,面了一个小时,把个人生活经历趴了一遍,(问了相似你的优缺点,最让你高兴的一件事,最让你伤心的一件事,你的职业规划,你的理想等等,这种,如今想不起来了)也没什么特别好说的。

  面完后次日去圆桌签offer,就这样又拿到了阿里的实习offer。

  LZ后面衡量了杭州阿里B2B和广州腾讯MIG,最后选择去了阿里,由于在总部,感受大boss人比较好,发展前途可能不错,并且留下来的概率比较大,而腾讯是一个分部门,感受可能不是颇有前景(可是后来了解到其实广州腾讯MIG发展前景很是好,环境也很是和谐,我同窗去实习的都留下来了。哎,只能感叹选择是个大问题)。在阿里实习的两个月时间也挺愉快的,学到了很多东西,也认识了很好的师兄和主管,只因最后被拥抱了变化没有拿到正式offer。

  实习面经就已经写完了,后面是正式找工做的经历,主要是内推比较多:腾讯、网易、蘑菇街、小米,校招就面了家百度。

在阿里实习的时候,面了网易和蘑菇街。

网易

  内推1面: 电话面,一天在里中午休息的时候面的。这一面我面得很烂,因为在阿里实习,面试官刚好也在阿里呆过,问了我在阿里学到了哪些东西,看过哪些框架,看过源码没有,我支支吾吾说了一些,面试官不太满意(我表示我都说不全啊,在阿里就来了不久,哪那么多时间看源码)。项目各类细节问一通以后,开始问基础,Http报文结构,Handler、Looper模型,ThreadLocal(这个LZ当时没答上来),怎么使service不被杀死,android内存优化,本身实现线程队列模型,问我怎么设计(这个当时被前面的问题问蒙了,直接说不知道了),面了20+分钟,感受答得都不怎么好,而后面试官问我说还有没有什么比较擅长的他没有问道的,我就把android Framework里zygote的启动和Binder通讯说了一遍(这里强行装了一次逼)。

  面完以后本觉得挂定了,而后师姐跟我说竟然过了,也是够神奇,我以为是我后面补充的内容救了我。

  内推2面: 二面是现场面,就在阿里滨江区的隔壁。时间是一天中午,吃了饭就到了隔壁。面试官是个比较年轻人,可能大不了我几岁,也是很是好说话,开始也是聊项目,我把在阿里作的app和本身写的小框架拿出来,他就指着上面各类问,这里怎么实现,会有什么问题,你怎么解决,而后他描述了一个场景说,两个activity,前面的是个dialog activity,怎么在dialog activity存在的状况下改变后面的activity(lz答的用广播)。android怎么解决缓存,要是内存超了怎么办?而后扯到了JVM,GC断定算法与方法,哪一个区域用什么GC算法,怎么改进复制算法。而后是基础,也像一面同样问了一些,hashmap和concurrntHashmap的区别、泛型可否强制转换。而后是算法,问了快排和归并的平均时间复杂度与最差时间复杂度,出了个算法题:怎么找到一个随机数组的前50大数、中间50大数,(这个用最小堆和partition函数),复杂度是多少。

  面完以后其实感受还不错,基本都打答上来了,顺利进入三面。

  内推3面(HR): hr面也是现场,也聊了不少,问我为何要从阿里来网易,有什么打算,你看中网易的什么(主要是针对我是在阿里实习来问的,我就讲了一堆网易的优点),让来杭州工做愿不肯意。还跟我说了,此次内推是优中选优,有名额限制,若是没有经过,请继续关注网易校招。

  后面让师姐查了下状态,状态显示是三面已经过。可是最后没有收到offer,仍是有点小失望。

蘑菇街

  内推1面: 电话面,也是在一个中午面的。18分钟,问了一些项目,主要是问基础、问得很是基础:Arraylist与LinkedList区别,String与StringBuffer用法,HashMap与HashTable区别,Synchronized用法等等等等(很是基础),这不一一列举了,而后很顺利的就过了。2面是在20天后了,也不知道蘑菇街出了什么岔子。

  内推2面 :也是电话面,CTO面试,就总体聊了项目,我在项目中学到了什么,遇到什么困难怎么解决的,在阿里实习学到了哪些东西,有看过源码么,个人优缺点,我为何选择蘑菇街,我了解蘑菇街哪些东西。最后答完感受本身答得还行可是也没有过,不知道为何。

小米

  内推1面: 电话面,大概40分钟,面试的时候那边很吵,不过幸亏面试官语速慢,并且我答完一个问题后,面试官会和我交流哪里没有答好。没有问项目,就问了基础,问题也很少:HashMap删除元素的方法,for each和正常for的用在不一样数据结构(ArrayList、set、hashmap)上的效率区别(LZ表示没有看过源码,不知道),static class和non-static class的区别,一个大文件几个GB,怎么实现复制(这个也没有答好)。而后问了两个算法:以前一个出现过,另外一个是在git里面,若是有n个分支,m次commit怎么找到任意两个节点共同的那个父节点(这个当时我想错了,想到二叉树上去了,没有答好)。而后让两个算法用代码实现,1个小时内写好email给他。

  小米面了之后也杳无音信,估计也是要求很高,毕竟解决北京户口。

  其实在阿里实习的时候很早就开始投简历了,由于出去实习一段时间后,感受仍是很想留在成都(由于lz是四川人)。腾讯我没有参加校招面试,直接走的内推流程。

腾讯

  1面: 电话面,7月20+号,很水,就问了项目,聊了可能有十多分钟,而后面试官说,内推没有什么做用,仍是要走校招面试(我以为他多是有其余事情,想节省时间),你在实习不能回来,仍是要现场面一次才行,而后就留了个电话让我校招联系他,这样就完了。2面是在我回学校后了。

  2面: 9月6号我回学校以后,下午3点接到电话,让我晚上7点去腾讯现场面的(我在想为什么是在晚上,lz学校到腾讯要2个小时,还让不让人回来了),当时紧张得要死,由于刚从阿里回来不久,都没怎么好好准备基础,在地铁上看了两本基础书,亚历山大。面试是在腾讯里面,微信部门,面试官是个中年人(如今是LZ的主管),看起来仍是比较沉稳的那种。也没问基础技术问题,就聊项目细节和一些可优化的地方,而后把lz的简历看了翻了一遍,问了一遍,而后就是问我在阿里学到了什么,为何当时选择了阿里(这时候确定要各类跪舔啊)。而后后来他说他是作ios的,我在想难怪不问我基础。

  面完了说一周以内通知我结果,也没报太大但愿,感受并不太对口,由于搞不懂为何是作ios的来面我。

  两天以后,在阿里HRG电话通知我拥抱变化以后,几乎同一时间,腾讯电话通知我拿到了成都offer,我只能感叹太巧了(大概这大半辈子的运气都花光了)。

  后来校招开始后,只面了百度一家公司,百度确实比较重视基础与算法,看中技术。

百度

  1面: 大概1个小时,又是个作ios的师兄面试我,天然就只能聊项目了,我给他展现了我作的app后,也问了些技术问题,缓存怎么作的,内存溢出怎么处理。而后两个算法题:把一个数组中奇数放前面,偶数放后面,这个要求写出来。另外一个是3亿条IP中,怎么找到次数出现最多的5000条IP。最后问了是否愿意去北京,对于技术的见解。

  2面: 50分钟,写个4个程序题:反转链表、冒泡排序、生产者消费者,这三个都还好写,很快的写出来了,还有一个题是在一组排序数中,给定一个数,返回最接近且不大于这个数的位置,要求时间在O(logn)(这个想了一会,用二分查找,而后特殊处理了一下),最后他看不懂,要我一步一步解释。花了好一整子,最后问了个java反射,就让我走了。百度果真是重视算法。

  3面: 这一面应该是个技术高层,笼统的问了我一下项目的问题,而后问了几个基础:java反射机制;android动画有哪些,什么特色?TCP/IP层次架构,每层的做用与协议;TCP拥塞控制;滑动窗口是怎么设计的,有什么好处;android的布局都有哪些。问完这些以后,而后就是有点相似于HR的聊天了:若是此次面试过了你以为是由于什么缘由,没过呢?你以为百度怎么样?你对技术路线什么打算?有些和前面重复的就不写了。而后他让我问他问题,我就连续问了五、6个问题,最后愉快的走了。

6、 写在最后

关于选择

  LZ当时实习的时候,杭州阿里和广州腾讯选择去了阿里,可是却由于拥抱变化没有留下来,相反这边在腾讯实习的同窗却很顺利。可是也是由于没有去广州腾讯,最后我能留在成都腾讯。选择是一件很是重要的事情,它决定着你的将来,可是也有一点你得知道:因祸得福焉知非福,如今看起来不太好的选择,不必定未来就好,将来有太多未知数。

心怀感恩

  其实一路走来,我也是在成长,从最初的不自信,到了最后面试一切都比较冷静与沉着。我一直相信,机会是留给有准备的人,因此,请提前准备,越早越好。我很感激能有那么多人帮助我和确定我,没有最初腾讯的确定,我确定不会走的这么顺利,因此我很感恩哪些让我经过的人,也感谢咱们实验室的兄弟姐妹,给了我良好的学习成长环境,心怀感恩才能好运常在。

        找工做其实就像是一场战役,

        前面咱们经历了高考或者考研,

        如今是找工做,你不在这个时候搏一搏,

        怎么对得起你以前的努力。

        不要担忧找不到好工做,你要相信:

        天道酬勤!

相关文章
相关标签/搜索