Android实习生春招面经,阿里五面头条四面

刚刚邮箱居然收到了有人喜欢我一年前写的半桶水事件分发机制。都一年多没上简书平台了,这一年由于发生了点不太如意的事情,工作室的房间被撤,我们失去了根据地。所以我的简书之路刚开始就停下了脚步,挺不好意思的。。。
正好前段时间实习春招拿到了头条和阿里的offer,这里把我的一些心得分享给大家吧~

阿里面经+个人心得

一面
  • java虚拟机相关问题
  • 垃圾回收机制
  • 数组和链表的区别,特点
  • CCSP里做过什么题目
  • HTTPS SSL
  • TCP/IP三次握手
  • HandlerThread
  • ThreadLocal
  • View的绘制
  • ListView优化
  • Handler机制
  • 事件分发机制
  • 谈谈你对MVP的理解及其优化
    有些人将Activity作为Presenter。还有对Presenter的优化,在V与P之间 P与M之间 增加代理类(虽然我没有做过。)
  • Builder设计模式的应用
  • 内存泄漏(详细举例)
    比如单例模式下,如果实例持有Activity的引用,那么Activity退出时它的内存将不会被回收,因而导致内存泄漏,这种情况应该传Application的Context
    匿名内部类将持有Activity的实例。避免在Activity中使用非晶态内部类,在传递Activity的时候使用软引用(使用前记得判空)
    使用LeakCanary 进行Android内存检测
  • java的类加载机制
  • Android的类加载方式,区别
  • Glide
  • 进程管理
  • 内存管理
  • 设备管理
  • 文件管理
  • 中间还有一些问题暂时想不起来了
二面
  • 介绍下自己
  • 介绍下自己的项目
  • 请说下你对相册的优化
  • RecyclerView复用机制
  • RecyclerView的优化
  • Glide加载图片原理(如何压缩,如何缓存,三级缓存各是什么作用)
  • 如果增加了缓存是否会使你的App性能下降?
    这里他是想问你你为啥实现缓存,图片复用的命中率有多少?缓存真的能给你的app带来效率上的提升吗?主要结合项目来谈
  • 一个jpg或者png图片,它的大小如何计算
  • 如何处理recyclerView图片闪烁问题
  • 在开发过程中,遇到最大的困难是什么
  • 你的技术栈,平时怎么学习的看过哪些书
  • 数据库,索引,事务(详细介绍的那种,比如索引底层用的BTree,优点缺点,事务的四大特性,权限等)
  • MVP,MVC
  • 循环链表的检测
  • 好像还有一些问题。想不起来了,我尽力了。。真的。
总监面
  • 你是怎么学习java和Android的
  • 问项目
  • 主要还是围绕项目聊。。项目功能的实现,项目维护啥的,深入项目细节
  • 自定义View,在网上看过哪些自定义控件,自己实现过哪些?
  • 看过哪些源码?
  • OOM怎么出现的?解决方法?
  • Glide源码
  • java内存模型
  • javaGC过程
  • 屏幕适配
  • 考不考研。。。
  • 参加过B或T的面试了吗?为什么选择阿里?
  • 清明后HR会尽量快点给你打电话
交叉面

某天晚上十点钟,打游戏打得正嗨呢,突然杭州一个电话打过来,心里一哆嗦。只能坑队友了。。

这次是另一个部门的主管面试的我,由于当天晚上面完了我就洗洗睡了,加上第二天又浪了一下(某个学长回来了,和社团的同学去吃火锅唱KTV,杰伦专场唱到嗓子哑 + 感冒头疼。。)具体的问题记得不太清楚了,不过总的来说主要还是围绕着项目的细节问的,还有对项目的优化和进一步改进的方法,和一些其它小问题。。
(老夫记性一向不太好。。这里给大家说声不好意思了。。)
不过最后面试官对我还是挺满意的,让我等待HR面试。

技术面总结

总体来说不是很难,阿里的面试官比较注重基础和项目。应该是对自己工作定位原因吧,我给自己目前的定位是实现应用层的功能上,还没机会,暂时也没实力进军SDK开发,先把应用层做好吧。所以和面试官聊的最多的是对项目的看法。一般来说他们不会太为难你的,可能是我运气好吧,我遇到的面试官都很Nice。复习好就行,遇到不熟悉的领域的先说自己在该方面的认识再说不会,如果他继续问你,说明在考察你思考问题的思路,顺着思路答就好了。

HR面

这里由于涉及到一些个人问题,我就不怎么贴出来给大家看了,这里给大家推荐一下我准备HR面试时看的面经吧

http://www.zheyibu.com/article/5698.html

http://baijiahao.baidu.com/s?id=1566148416765923&wfr=spider&for=pc

http://ifeve.com/ali-think-21/

都是百度上很好找到的面经

HR面总结

其实在HR面这块,很多地方我答得并不是很完备,全程小心谨慎,生怕说错半个字
在HR面里,个人觉得更多的是考验的是你的综合能力,作为一名程序员,有努力勤奋的精神是不够的,还有注重和团队成员的沟通和情绪管理(千万不要拿刀砍产品经理 o( ̄ ̄)d )
后来HR还告诉我,专注于技术也是不够的,对业务也要做到胸有成竹。最后真诚+反套路是关键!最主要的还是真诚,毕竟她吃的盐比你吃的饭还多,要比套路你是套路不过她的,扬长避短,引导她向你的长处发问,最好结合自身经历多准备几个实际场景

持续一个多月的春招内推经历圆满结束!长舒一口气啊,赶紧下山把头号玩家看了

最后。。。

头号玩家真好看! (`・ω・´)

一些拙见吧

如果确定了自己要找工作,大概从大二开始要有危机感了,可以开始接触项目维护项目并看相关书籍和框架源码了
主要还是通过项目学习,再一个就是看书看博客了。这里给大家推荐一些学习的书籍:

  • 深入理解java虚拟机
    java 的一些容器类的实现过程也很重要哦! 比如 HashMap,ConcurrentHashMap, LinkedHashMap等等的实现原理,要熟知,上面虽然没问到,但其他公司问的挺多的

  • java多线程编程核心技术

  • java并发编程的艺术
    关于并发,新手不建议直接看并发编程实战,最好从上两本入门

  • Android第一行代码

  • Android群英传

  • Android从小工到专家

  • Android开发艺术探索

  • Android源码设计模式
    关于Android方面的书籍,当然还有一些其它的优秀书籍,这里我暂时推荐我读过的吧。

  • 图解HTTP

  • 图解TCPIP

  • HTTP权威指南
    由于我是属于那种万年不听课的人。对学校的教育也不太重视,期末的时候只是敷衍了下。还是有点后悔的,对于专业课如果碰到了好老师大家还是要好好学啊!
    关于计算机网络,找工作的时候最重要的两个点是 TCP/IP三次握手四次挥手和SSL过程, 其次要知道HTTP的组成,最好看一遍HTTP请求头响应头中的关键字。
    其实我觉得图解系列看的挺舒服的,很快就看完了思路也清晰,就是不够深入,可以根据自己感兴趣的点展开,百度谷歌

  • 数据结构方面,这个不太好建议。代码写多了就会了,学校的数据结构课认真上,Mooc上的网课认真听,题目认真做,实在不行面试前去牛客网去学校的OJ上刷题

  • 数据库方面,自己操作一遍,把一些比较复杂的操作自己动手实现一遍,熟知视图,索引,事务等等的原理过程,一般不会问的太难

  • 操作系统方面问的比较少,但这也是我现阶段比较薄弱的点,在此不太好向大家推荐我的拙见,我目前的想法是看鸟哥私房菜,后面会慢慢恶补这方面的知识

  • 关于博客公众号
    CSDN上几位大神的博文(郭霖、鸿洋等)和 原来的StormZhang,这里不是想抹黑张哥,主要是张哥现在转管理岗了,关于技术方面的博文更新较少,对实习生找工作来说收益不太大,但现阶段他公众号的作用更多的是扩宽视野和人生规划方面,还是值得关注的

最后祝大家 找工作的 能顺利拿到心怡的offer,考研的 能考上理想的学校,找到优秀的导师

(*´・v・)

头条面经

一面
  • Activity生命周期,启动模式

  • onNewIntent调用时机

  • 垃圾回收机制

  • volatile

  • 事件分发

  • Bitmap压缩策略

  • 自定义View(requestLayout,invalidate)

  • invalidate 导致该View 重绘

  • requestLayout 导致该View该View的父View重新执行onMeasure、onLayout

  • 获取View宽高的方式

  • View层级的优化

  • MVP,Presenter的优化

  • HandlerThread

  • SharePreference

  • 数据库

  • git

  • 进程间通信的方式

  • Parcelable与Serializable 的区别

  • Glide

  • Rxjava

二面
  • 介绍下自己

  • 介绍下项目

  • 项目中视频是怎么实现的

  • 项目中实现相册的过程中遇到哪些困难

  • RecyclerView 优化,它的优势有哪些

  • recyclerView 和listView 复用机制的区别

  • Glide源码

  • BitMap图片大小如何判断

  • BitMap具体的压缩过程

  • BitMap在缓存时候的转码过程

  • Activity四大启动模式,以及联系实际情况的询问

  • activity与window在什么时候关联起来的

  • activity.startActivity 过程

  • activityStack,activitySupervisor 相关知识

  • ThreadLocal 是怎么做到线程私有的

  • 一个具体的Android场景,问我怎么设计(关于分割线,我想对不同Item进行不同处理,怎么做)

  • 另一个具体的Android场景。。(自定义一个Button,要对它进行单次点击监听,两次点击监听,多次 点-击监听,怎么实现)

  • Handler内存泄漏原因

  • ViewStub,merge,include相关问题,以及merge中再加一个merge

  • 一个普通二叉树,给你定点和指定节点,输出他们的路径(现场写)

  • 中间还有一些小问题不记得了

三面
  • 自我介绍

  • 写个题目,在数组中插入一个数据,并实现扩容

  • 计算机操作系统,在计算机中物理内存的地址结构是怎样的

  • 计算机网络,如果要实现一个即时通讯的技术,你时选择TCP还是UDP,为什么

  • 算法,在手机通讯录的查找功能中,输入前几个字符,输出匹配字符,你如何实现,使用什么样的数据结构,为什么

  • java虚拟机的内存结构

  • javaGC过程

  • 你有什么想问我的

其实头条三面我挺懵逼的,我同学都是二面+HR,为咩我多了一个技术面。?!而且全程不到二十分钟,很短

HR面

头条的hr面还是挺轻松的,HR小姐姐非常温柔,而且对我们学校的科技组织非常了解,聊的很开心。

推荐阅读更多精彩内容