从阿里面试说起,阿里的面试一般采用电话面试的形式。笔者一共参加五轮面试,一面电话面试+在线编程,二面视频面试+在线编程,三面部门boss面试,四面交叉面,五面HR。在此分享五轮面试的大概问题吧,笔者是android岗开发,所问题型会更偏android。
一面
阿里的面试官都很和蔼。一面面试官听声音感觉应该是入职两三年的感觉。上来自我介绍后直接开始问android相关问题。大概问题如下:
-
android中的dp、px、dip相关概念
-
handler机制,四个组成部分及源码解析
-
布局相关的控件作用及实现原理
-
android中的布局优化
-
relativelayout和LinearLayout在实现效果同等情况下选择使用哪个?为什么?
-
view的工作原理及measure、layout、draw流程,要求了解源码
-
怎样自定义一个弹幕控件?
-
如果控件内部卡顿你如何去解决并优化?
-
listview的缓存机制
-
Invalidate、postInvalidate、requestLayout应用场景
-
多线程,5个线程内部打印hello和word,hello在前,要求提供一种方法使得5个线程先全部打印出hello后再打印5个word。
-
实现一个自定义view,其中含有若干textview,textview文字可换行且自定义- - - - view的高度可自适应拓展
-
编程题:将元素均为0、1、2的数组排序。在手打了一种直接遍历三种数目并打印的方法后让手写实现,手写实现后让再说一种稳定的方法,说了一种通过三个下标遍历一遍实现的方法,读者可自行百度,在此不赘述。
一面面完挺懵的,感受到阿里校招的火力,阿里的要求程度高于“知道、会用”那一层,你需要了解底层原理、机制才能过关。一面50min。一面面完,面试官说需要反馈面试过程后才能知道是否通过,后来了解到阿里的一面是“简历筛选”面,刷人不会太多。自我感觉良好,总体答出大概百分之八九十,面完便好好准备二面了。
二面
二面很重要,二面很重要,二面很重要。二面对于你是否能通过面试,是否能最终从池子中被捞出来都很重要。一面面完的第二天下午收到来自杭州的电话,约了晚上九点的时间,且通知了视频面试和在线编程。一阵慌张……看了那么多面经,没见过谁连续两次编程的……晚上九点,准时登录视频网址后,面试官已经在线。二面面试官稍显严肃,给人感觉非常严谨。上来简单自我介绍后,他说一面评价比较好,他会面试得细致一点,可能时间会稍长。当时心神一紧,做好了鏖战的准备。二面问的内容非常多,且覆盖范围很广,大概问题如下:
JVM方面
-
java内存模型,五个部分,程序计数器、栈、本地栈、堆、方法区。
-
每个部分的概念、特点、作用。
-
类加载的过程,加载、验证、准备、解析、初始化。每个部分详细描述。
-
加载阶段读入.class文件,class文件时二进制吗,为什么需要使用二进制的方式?
-
验证过程是防止什么问题?验证过程是怎样的?加载和验证的执行顺序?符号引用的含义?
-
准备过程的静