一个三非渣本的安卓秋招之路
欢迎访问我的个人博客 ,原文链接:http://wensibo.top/2017/10/29/interview/ ,未经允许不得转载!
距离上次更新文章已经过去一个多月了,实在是很抱歉没有按照进度更新博客。最近主要是在忙秋招,前几天也刚刚结束,所以这篇文章就来和大家一起分享我的秋招之路。
或许大部分朋友都是从这篇文章————2017腾讯实习生Android客户端开发面试总结开始认识我的吧,在那篇文章中我也讲到自己是非科班出身,同时学校也是非985非211的普通一本学校,这也就是标题中讲到的“三非”,这篇文章主要是记录一下我的秋招历程,在文章中我也会分享自己准备秋招的一些经验,希望对大家有所帮助。话不多说让我们开始吧!
前言
先来说一下我目前的情况吧,截止到这篇文章发布的时候,我手上是拿到了4个offer,分别是实习的公司,珍爱网,久邦数码,租租车,在等待最终结果的是还有1个。像我这种实力是拿不到大厂offer的啦,请大神们轻喷。
回顾整个秋招,从8月底开始,先后总共投了11份简历,8份过了笔试来到了面试,在这8个中有2个一面挂分别是腾讯和4399,剩下6个都到了终面,最后有1个终面挂,剩下5个就是上面说到的5个。很多朋友会问为什么只投了11份呢?因为个人的关系,我选择在广东省内工作,其实主要就是广州和深圳,再加上本身投递的岗位是Android开发,所以选择的公司就少了很多了,其实我也很羡慕那些能够到外省工作的同学,当然这个是个人自己的选择啦!下面我就来细讲一下这些面试的过程。
面试总结
体验最好的面试————CVTE
CVTE是我第一个去面试的公司,三轮面试下来总共是两天,不过两天不连续,这两天的面试都是到地铁站附近等候公司的班车过来,然后坐班车前往公司面试,一面二面安排在同一天,从等待面试的人数就可以看出CVTE很受欢迎。当天我是早上11点到的公司,然后工作人员安排我们到电影院稍作休息,等候面试通知,从公司的基础设施以及环境就可以看出CVTE还是挺有钱的,工作人员也十分的热情,整个面试流程也是尽然有序。
CVTE一面
一面的时候是两个面试官同时面试我,一个问问题的时候另一个做记录,另外一个问问题再由另一个做记录,这轮面试总共40分钟,面完之后感觉快要虚脱,因为面试节奏很快,如果脑袋不够用就可能当场gg,不过问的问题都是很基础的知识,只要基础够扎实基本没问题。下面是我被问到的一些问题:
从ActivityA跳转到ActivityB的生命周期调用顺序? Activity的四种启动方式? Android多线程的通信方式有什么?做简要介绍。 Android中的消息机制? HandlerThread的原理? Window的工作原理和作用? 自定义View的流程以及需要注意哪些地方? 自定义View的时候如何实现wrap_content属性? View事件分发机制? 滑动冲突的解决方法有哪些?子View如何通知父View去拦截某事件? Volley原理? retrofit原理? JAVA的四种元注解是什么?主要作用有哪些? okhttp原理? 老年代与新生代的区别? JVM中的复制算法是什么? java加锁机制有哪些方法?原理分别是什么? wait()和sleep()的区别是什么? synchronized关键字的四种用法和区别? onCopyWriteArrayList的原理? Hashmap实现原理? concurrentHashmap原理? 反射机制原理? 动态代理原理? 单例模式有哪些实现方法? 手写算法题————字符串反转的有哪些方法?
一面大概历时40分钟,时间也来到12点多,结束之后就等待二面,因为怕面试官通知面试所以就没去吃午饭,话说CVTE的零食和饭堂都是挺不错的,可惜没有去尝一下。差不多一点多的时候就是二面。
CVTE二面
二面应该是总监面,问题主要偏向项目,有一些问题已经忘记了,只能列出一些还记得的:
做了哪些项目?详细说一下项目。 讲一下RXJava原理;subscribeOn()与observeOn()哪一个方法多次切换线程只有第一次有效?为什么? Volley原理? Retrofit原理? Volley与Retrofit缓存机制有哪些区别? 简单工厂,工厂方法,抽象工厂三种设计模式的优缺点? 什么是内存泄露,什么是内存溢出? 平常使用什么分析工具来优化APP的性能? 手写算法题————实现一个栈 Java的集合类包括哪些?各自有什么特点? 为什么写博客? 今后想要往哪些方面发展?
二面其实发挥得不好,尤其是讲到RxJava的时候,因为没有仔细看RxJava源码,后续会写关于这个开源库源码解析的文章。
过了几天之后面试状态变成了终面,然后就前往CVTE的第二产业园进行HR面,一般是两个面试官同时面三个同学,不过因为我面的那一批人数不够,所以只是2对2。不得不说CVTE的HR真的很专业,把我从小到大的事情都扒出来了,问的问题大体如下:
对自己两轮面试打一下分 都面试了哪些公司,拿到哪些offer? 小时候印象最深刻的一件? 说说自己的家庭情况? 说说对自己影响最大的人? 父母的性格都是怎么样的? 从小什么事情对自己的影响最大? 期望的工作地点,每天期望的工作时间?一周期望工作多久? 有什么理由会让你拒绝CVTE的offer? 说说你对薪资的要求? 觉得什么是自己不喜欢的? 说一下自己的优点和缺点? 梦想是什么? 有什么问题想问我?
全程还是挺严肃的,大概30分钟,不过因为之前对一些问题做了准备,所以没有遇到太大的难题。HR面之后过了几天官网显示已经通过终面,不过终面过了并不表示能够顺利拿到offer啦,按照CVTE的惯例,顺利通过终面的学生一般是需要经历一周的考核,考核的项目完成之后会进行再一轮的HR面,最后才会给结果。也就在前两天我刚刚结束了为期一周的实习,实习期间我的导师,同事,老大都很nice,有什么问题都可以向这些同事们请教,他们都会很耐心的帮忙解答,更重要的是CVTE给实习生的待遇很好,除了很好吃的一日三餐以及宵夜之外还会安排公司的公寓式酒店给实习生入住,相信去实习的同学对这点应该都很清楚。说了这么多好的那也该说一下不是特别好的地方,首先就是工作强度会稍微有点大,不过因为我是短期实习生,同时也要这3~4天内完成一个项目,所以压力相对大,每天几乎都是8点半左右上班工作到晚上9点多,中午12点多吃午饭,下午两点上班,如果你觉得这样的工作强度适应的了的话那来CVTE肯定是很好的选择,最后再说一下项目考核之后的HR面吧:
实习的这一周有什么不适的吗? 对公司的安排有什么意见吗? 觉得哪方面还没有达到你的预期? 跟家里人说了来实习的情况了吗?家里人都说了些什么? 父母对你未来的期望是什么? 未来对父母有什么打算? 家里情况怎么样? 父母对你的影响是什么? 从小到大对你造成的负面影响最大的事情是什么? 哪一段时间是自己压力最大的时候? 给自己的实习考核打个分? 觉得自己能不能够通过此次的考核?为什么? 期望的薪资是多少?最低的薪资要求是多少? 如果考核评估觉得你无法达到这样的薪资水平你该怎么办? 如果没有通过CVTE的考核你该怎么办? 手里都拿到哪些Offer了?薪资水平都怎么样? 都拿到这么多offer了为什么还来实习? 为什么会选择CVTE? 有什么理由让你拒绝CVTE的offer? 什么情况下你会从CVTE离职? 还想对我们说什么?用一句话表达。
讲真,经历了这么多次面试,CVTE的HR面给我的印象是最深刻的,当然这次的面试压力也是最大的,跟我一起面试的另一个小伙伴也顶着很大的压力,我们两个面试结束之后都大口的舒了口气,这次的HR是相对比较高层的,经验可以说相当丰富啊,对每个问题都会挖得很深直击要害,如果没有提前做好充分的准备可能会被问哭。总之这个星期的实习确实是个非常不错的经历。
体验最糟的面试————4399
其实这样黑4399也不是很好,那就当成是我个人的片面之见吧,写出来只是与大家分享而已,完全没有恶意。4399的面试是在华工中心酒店,去之前就听说今年的面试有点水,一面似乎都是20分钟草草而过,听去面试的同学讲起问的技术问题不多,主要聊人生。本来也不是很想去的,因为同时间也赶着去另外一家公司面试,不过为了给自己多一次机会,所以也来到现场。话说4399的人气不是盖的,会议室里坐满了人,到了现场不到3分钟就被叫去一面。
4399一面
自我介绍 问了一下项目 说说ListView与RecyclerView的区别 说说以后的发展方向 为什么写博客 用过什么设计模式?问说需不需要详细说一下面试官说不用。 有优点和缺点? 觉得自己什么情况下会离职? 怎么学习Android的?
大概就这些问题了,面完之后面试官叫我出去等一下,然后前台的工作人员过了一阵子叫我先回去等消息,接着另一个工作人员叫我稍等一下,然后在电脑上处理了3分钟左右,接着另外一个工作人员又叫我去面二面,不过刚才那个工作人员说他在处理我的,又过了2分钟他叫我回去等消息了。听到这个回复就知道gg了。
总体评价一下这次的面试,感觉4399确实很多人想去,不过不知道今年是不是不怎么招人,感觉面试都很水,也有可能面试官觉得我很渣,然后随便问问过一下流程吧!不过我一直觉得面试是一个互相了解的过程,双方都应该尊重彼此,不然怎么体现这个公司的形象呢?
最轻松幽默的面试————珍爱网
珍爱网简历是在8月份就投了,10月13号的时候在华工进行了现场笔试,最后HR面的时候面试官跟我说其实我的笔试成绩有点低(尴尬脸),当初做的时候觉得除了算法题之外都答得挺好的呀,可能有些题目考虑的不是很全面吧。现在想想觉得自己还是挺幸运的。当天就收到一面的短信,一面面试官给我留下的印象十分深刻,无论是开口的第一句话:“我们不用搞得那么严肃,轻松点就行(哈哈)”,还是面试过程中对我回答的不好的问题耐心的纠正,到最后离开的时候站起来跟我握手。整体给面试者的印象都十分深刻,相信有面过珍爱网Android的同学都会倍感亲切和轻松吧!
珍爱网一面
介绍一下做过的项目,面试官问我手机上有没有安装做过的APP,自己的APP当然得装在手机上啦,于是面试过程基本都是围绕着这个项目展开的。 介绍一下RecyclerView的原理以及优点。 为什么会选用Material Design? Android 5.0之后的版本和之前的版本有什么区别? DVM与ART的区别?(回答得不好) 为什么要写博客? 怎么学习Android的? 项目中遇到过哪些困难?如何去解决的? MVP与MVC有什么区别? Custom-Tabs-Client是什么?(因为在项目中用到这个开源库)作用是什么? Handler机制?Looper原理? 如果在主线程中同时创建10个Handler,会发生什么事?(回答得不好) HandlerThread实现原理? Activity的启动流程? ActivityThread的main方法主要做了哪些操作? 对团队有什么要求吗? 有哪些问题要问他的?(去面试之前使用了珍爱网的APP,发现有一个页面有点卡顿,然后使用AS的dump View Hierarchy for UI automator观察了这个Activity的实现组件是webview,但不是传统的webview,而是基于腾讯的X5内核,同时注意到这个页面需要连接网络,如果没有网络连接的话就无法显示内容,后来通过使用分析知道这个页面的卡顿有一部分原因是网络连接造成的。基于这个问题与面试官进行了一番讨论。) 还有什么问题要问他的吗?(请教了一下面试官在珍爱网工作最大的收获是什么)
面试结束之后面试官主动站起来跟我握手,我都有点受宠若惊了。分析了一下这次面试,觉得自己的技术问题上大部分答得都还行,不过有两个问题基本属于知识盲区,所以回答的不好。能过一面我觉得除了运气好之外,可能是我问的两个问题也加了不少分,第一个问题主要是我有去使用他们的产品,并且对其中的问题有自己的思考和深入的了解,这可能是面试官更加看中的吧;第二个问题能够体现出我很想去珍爱网的热情。
珍爱网二面
二面应该是总监面或者总裁面吧,面试官懂技术,会问一些技术问题,估计是CTO之类的高管。主要的问题记录如下:
介绍一下项目,面试官同样也拿着我的手机看项目。 项目中有没有做一下性能的优化?优化工具有哪些? 了解过哪些设计模式?分别详细说一下优缺点? 什么情况下使用单例模式? java中的加锁有哪些方法? 说一下网络连接的状态码的含义? 说一下长连接的优点和缺点? 如何看待Android未来的发展? 为什么会选择学习Android? 如何学习Android? 自己有什么优势? 为什么写博客? 项目中遇到过哪些困难?如何去解决的? 遇到过最大的坎是什么? 有什么问题要问他的?(面试前看了一下珍爱网的官网,注意到对应届生有一个培养计划————纯珍计划,于是就向面试官提问)
二面感觉发挥还可以,个人还是觉得问的问题还是比较重要的,要让面试官觉得你是一个有心的人,觉得你很想来公司工作,所以从官网了解公司是最直接的啦!二面紧接着就是HR面了,HR小姐姐很有趣,这一轮问的问题就是对一些基本问题的了解了,如实回答即可。过几天之后就收到offer通知了。
最真诚的面试————租租车
这里说的最真诚当然不是说我自己啦,我对待每次面试都是十分真诚的啦,这里的真诚就是指租租车的面试官们,因为公司已经经过了B+融资,今年应该是首次校招,不过从规模上来看招聘会办的十分好,招的人数也不少。一面的面试官挺负责任的,在面试之前先浏览了我的博客,以下是面试的一些问题。
租租车一面
自我介绍 介绍一下项目 说一下Retrofit原理 说一下java中4种元注解? 说一下@Retention元注解的三个取值的使用范围和场景分别是什么? 说一下Volley的原理 说一下Retrofit与Volley的区别和使用场景 说一下Android中的多线程通信机制 说一下Android中的Binder机制原理 自定义View的流程 MeasureSpec是什么? View事件的分发机制 Android如何实现图片的高效加载 java中的四种引用以及使用场景 项目中有做过性能优化吗?如何优化的? JVM的内存模型? java有什么垃圾回收算法?分别是怎么实现的? java多线程的三个特性?原理分别是什么? java多线程的锁机制有什么实现方式?原理分别是什么? 说说java中的集合类? 写一下单例模式? 为什么静态内部类不会造成内存泄漏? 说一下TCP与UDP的区别? 说一下网络连接的三次握手和四次挥手? 为什么写博客? 写博客给你带来什么成长? 有什么问题想问我的吗?(面试前使用了公司的APP,发现有一个页面出现了bug,然后就基于这个问题与面试官展开了讨论。)
租租车二面
租租车的二面是HR面,问的问题基本和其他的HR面相同,下面就列举一些还记得的
家是哪里的啊?父母对未来的工作有什么要求啊? 有什么优缺点吗? 为什么想要写博客呢? 觉得自己性格怎么样? 对未来的团队有什么要求吗? 拿到哪些Offer了吗? 对薪资方面有什么要求吗? 对自己未来几年的打算是什么? 学校什么时候发offer啊? 还有什么问题要问我吗?
租租车的工作环境是我比较喜欢的,地点在天河大厦,办公楼虽然只是一栋三四层的写字楼但都是自己的,而且装修十分讲究,从门外往里看就能明显感受到与其他公司的差别。两次面试加上一开始的笔试体验都挺不错的,去刚刚起步的初创公司确实能够学到很多当然对自己也是一种历练,更让我喜欢的一点则是公司员工大部分都是年轻人,跟他们工作会相对的轻松些。当然最后还是很开心能够顺利拿到租租车的offer啦!
Android秋招如何准备?
其实每个人都有自己特有的学习方法,我们都需要寻找到最适合自己的,在这里我只是列举出我复习的技巧,大家只需要选择适合自己的就行。
书籍和网站
我觉得看书真的是十分的重要,每一本书都有自己的知识体系,但是好书确实不多,需要经历一番挑选;关于网站则是对一些体系较小的知识进行汇总,这里推荐的是设计模式。以下我列举一些个人觉得不错的一些书籍和网站:
- Android 相关
- 《Android开发艺术探索》
- 《深入理解Android虚拟机》
- 《Android源码设计模式解析与实战》
- Java相关
- 《Java编程思想》
- 《深入理解Java虚拟机》
- 《图解Java多线程设计模式》
- 网络相关
- 《计算机网络》(谢希仁 编著)
- 《网络是怎么连接的》
- 数据结构与算法相关
- 《算法导论》
- 《算法》(第4版)
- 设计模式相关
- 图说设计模式
- 设计模式Java版
- 练习相关
- 牛客网在线笔试题(多练练编程题)
- LeetCode
知识总结
看了这么多书籍和网站之后需要对这些知识做一个比较系统的整理,这里推荐使用思维导图工具,不过市面上的这类工具已经足够多了,有的收费有的免(po)费(jie),大家可以根据自己的使用习惯自行选择,我个人使用的是mindjet,下图则是我总结的Android复习体系图,完整的版本大家可以点击这里下载。
面试技巧
面试前需要对自己总结的知识重新回顾一遍,以便在被问及时能够快速并且全面的回答问题。 面试前对该公司稍做了解,可以从官网或者从产品等方面了解,如果有产品的话还可以使用,看看有没有存在一些bug,当面试官要你提问题的时候可以跟他一起讨论。 面试完之后做稍做记录,记下自己回答的不好的问题,方便查漏补缺。
关于简历
我觉得简历真的十分重要,如果你的学历和能力都不是很有优势的情况下那么简历很可能就决定了你是否有面试的机会了。当然我的简历做得也不是很好,在这里只是与大家一起分享我在准备简历过程中的一些收获,下面一一与大家分享。
为每个公司准备一份简历
如果你不是去一些大型招聘会,不知道都有哪些企业过来招人,那么你大可以用一份普遍适用的简历投递出去,但如果你已经明确知道今天要去哪家公司面试了,那最好能够为这个企业准备一份专属的简历。最基本的就是在简历的页眉部分加上这个公司的logo,其次简历的文字主题色与logo相呼应,例如给腾讯的简历大概长这样
要不要放照片?
首先需要声明的是技术岗一般不看颜值,如果你能力棒棒哒同时颜值高高哒,那基本上就稳了,但如果你跟我一样都是屌丝,那得分两种情况讨论咯。首先如果你愿意花钱的话,可以到靠谱点儿的相馆拍张好的证件照,记得跟老板要电子版哦;如果你不愿意花钱的话,那我建议你还是不要放照片吧。
简历最好要彩印
其实我在简历上还是很舍得花钱的,今年学校换了打印店,彩印一面需要两块钱,每次打印心里都在流血啊,不过想到要给面试官留下一个好的印象,还是忍下心了。对了打印一定要用比较硬一点的纸,不要像普通A4纸那样软哦,这样手感才好哟!还有最好还是单面彩印,如果你的简历不止一面那就打几张用订书机钉起来!
推荐一些实用的工具和网站
这里并不是推荐大家什么简历模板,讲真我也没用过这些,对于技术岗的同学简历不需要花哨,只要条理清晰版面整洁即可,基本都是可以用我的(word)哥做。这里推荐的是一款获取图片颜色的工具,还记得刚才我说简历的文字主题色最好与logo相呼应,那就得知道logo的RGB属性值了,使用这款GetRGB工具则可以让你轻松获取图片的RGB参数。使用方式见下图哦!
另外推荐的则是一个图标库网站——阿里巴巴矢量图标库,在上面几乎可以找到你所需要的图标,并且可以自定义颜色与大小,还是免费的哦!以后妈妈都不用担心我找不到图标了。
后记
作为一个Android本科渣渣,在秋招中虽然也经历过失利与彷徨,但对最终的结果还是很满意的。这段时间很感谢身边人对我的帮助,感谢我实习的领导给我的意见和帮助,感谢面试过程中遇到的所有面试官以及结识的朋友们,也感谢我的老师同学朋友一直以来对我的帮助,当然也要感谢我爸妈对我的培养,最后的感谢留给自己,感谢自己学习Android一路来的坚持和努力。希望这篇文章对你有用,同时也祝大家能够实现自己的目标找到心仪的工作!