2017年Android岗春招总结

Posted by Csming on 2017-05-14

现在是五月份了;今年的春招基本上算是结束了;
基本没什么好面的了;
我的实习生的生活也确定是去美图了;
于是趁饭后的闲暇时光;做一做总结;


春招的流程

  • 投简历;
    首先是尽量寻求内推机会;内推是越早越好,因为有的公司是由内推名额限制的,所以去完了可能就GG了;
    我有个朋友,在企鹅厂内推阶段跟我一起寻求的内推;但是我们俩都属于畏首畏尾的怂泡;所以等准备的比较充分了,到截止日的时候,才上传的简历;
    所以内推阶段是没我们什么事了;

    当然没有内推机会的,尽量海投吧;多一个机会是一个;

  • 准备笔试
    笔试的话,注重基础;具体的基础,指的是数据结构,计算机网络,操作系统还有数据库;当然,客户端开发可以不用深入的去复习数据库原理;
    但是很注重数据结构和网络这两门课;
    数据结构还需要考察到算法;一些基本的像数组、链表、树、图等都是要了解的;此外还有一些基本的排序算法;其中就可能会考察到某某个排序算法是不是稳定的这样的问题;
    而计算机网络大多会考TCP/IP协议,以及其以上的内容;物理层和数据链路层比较少;当然,要了解三层交换机和路由器的区别;还有IP层寻址和TCP层寻址的区别;TCP和UDP的区别;TCP的报文结构;HTTP协议的状态码等等;
    操作系统常见的就是进程死锁相关内容,还有进程调度等;

    此外,算法题指的就是OJ上面的类型;建议看剑指offer;我在这个寒假之前,基本不刷算法;然后寒假的时候把剑指offer看完了,并且刷了一部分的leetcode的题目;发现leetcode上easy完全可以做,Medium的题目也不会有太多问题;这样基本可以应付一般的笔试了;除非出到一些奇怪的知识点,或者脑壳短路了。

    此外,安卓岗的同学需要熟悉一些Java的基础知识;这些后面讲=。=;

  • 面试阶段
    面试的话,不要紧张就行了;
    一般面试官先让我们自我介绍;
    **关于与自我介绍的内容:**一般面试官都看过我们的简历了对吧(看都没看的我们就怼他啊喂!),那么自我介绍的时候一般就说一些简历上没有的或者体现不到的;多说说自己最近的读什么书,在学习什么,在做什么有意思的项目这样的;

    简历上的东西我们一定要准备充分,来应对面试官的提问

    比较有意思的就是,我之前做过unity3d嘛;所以面过的厂的面试官都会问我为啥玩这个,后来为啥不玩了这样;
    像鹅厂一面的前辈就问我,怎么实现碰撞检测(把图形学知识忘得一干二净的我无言以对……)

    然后就是Java和安卓的一些基础知识;有的还会问一些上面笔试里写的基础课,算法题这样的;

    当然,算法题不会很刁钻,面试官主要是想看我们临场解决问题的能力;
    所以太快解题了说明我们之前可能曾经见过,于是还会问别的;
    太慢的话,也不会有太大的影响,可以跟面试官说说自己思考的一些方向;

    最后一个环节,面试官会让我们问一些问题;这时候聪明机智的我们就要表现的自己勤奋好学一点了;

  • 然后就是安心的等HR姐姐打电话通知HR面或者直接聊一些事项了

  • 最后,就是顺利拿到offer啦

自己的一些经历

我是属于比较咸鱼的;当时投了八九家厂;

然后最早开始面的是美图,后来顺利拿到offer后就懒得在准备其他厂了;

清明节在家里做了一下企鹅厂的笔试;
回来学校后,跟基友去吃清汤面(传说中的清汤面);
刚到店里坐下,就收到企鹅厂的面试短信了;
于是匆匆忙忙第二天赶去广州;
当然,我本身水平不是很高,加上没准备,一面妥妥挂了;

然后辣鸡美团,过了笔试迟迟没有面试通知;
最后发了个道歉短信;呵呵WTF;
剩下的几家的笔试不是翘了就是水过去了……(咸鱼咸鱼,又跑又跳……)

当时面完腾讯出来后,高德打了个电话了解情况,之后就没有消息了;


  • 分享一下面试的一些东西吧
    感觉套路都差不多;
    主要问的一些问题其他面经基本都有;

第一个就是问简历;
比如说,我们的项目有哪些哪些特色,然后里面运用到了哪些知识这样;
比如,鹅厂的面试官就问了很多unity3d相关的;可能是想看看我的知识面怎么样吧……

项目里有遇到什么困难吗;(宝宝遇到的困难基本都能在网络上找到解决方案,也都没怎么在意,所以没记录,妥妥的答不上来啊)
一般去哪些地方看技术文;一般都是CSDN,博客园,简书,stackoverflow这些吧;

然后鹅厂的面试官问了一些网络方面的;比如,TCP协议怎么保证传输的可靠性的,一般都是差错检测,拥塞控制等等,书上都找得到;当然他也可能继续问一些具体的情况来检验我们是不是真的理解了;

此外就是Java的基础和android的基础了;
这两个比较杂;


  • 准备阶段我准备了一下以下这些点;感觉也八九不离十

Java比较重要的有:
1.集合相关:重点掌握List:ArrayList,LinkedList;Set;Map;Hashtable等的区别
哪些集合框架是线程安全的等;

2.还有interface和abstract class的区别;

3.String,StringBuilder,StringBuffer的区别;

4.线程怎么开;
5.线程同步的几种方法;
同步代码块,同步方法,重入锁,特殊域变量等;一定要弄清楚适用的情况;

6.Java的线程池

7.JVM相关;加分项;ClassLoader,垃圾回收机制等;
自定义classloader
还有怎么判定辣鸡;

8.强引用,弱引用,软引用,虚引用等的区别和作用;

9.如何发现内存泄漏;解决方法;

9.重载和覆盖的区别

10.继承相关

11.内存泄漏;OOM……

12.各种基础类型占用多少内存

(再多我也忘记了)

JVM的了解是一个很好的加分点;垃圾回收机制,还有classloader这些;
(废话几句)要了解ClassLoader是双亲委托机制的;

  • Android方面的话比较杂

一般有生命周期;Fragment的和Activity的;以及两者交叉的;
还有,像是在一个app运行的时候,按了Home键,这时候生命周期是怎么样的;

还有一个比较重要也比较没办法速成的就是,事件分发机制;
还有自定义View;


打字打累了……

还是上几篇还不错的面筋的链接吧;

https://www.nowcoder.com/discuss/19340?type=2&order=4&pos=15&page=1?from=wb

https://m.nowcoder.com/discuss/21120?type=1&order=0&pos=14&page=1?from=wb

http://www.imooc.com/article/9375

https://www.zhihu.com/question/57815420

http://blog.csdn.net/jackfrued/article/details/44921941


我要睡觉了再见

你们看得很乱对吧;
咸鱼的我怎么可能刻意分段得很清晰呢hiahiahia