我隔一段时间都会出去面试一次,面试的目的不是为了找到好的工做,而是知道本身的优缺点是什么?知道市场须要什么样的人?一样,面试你的也是同行,这样也可以碰撞出不一样的思想。固然,遇到好的机会那是再好不过了。试想?若是你一直待在一家公司,都不知道外面的状况如何的话,那是很可怕的,至少我这么认为。若是您赞成这样的观点,不妨接着往下看,让咱们一块儿研究面试过程当中须要具有的知识。下面是我亲生经历的一次面试,这里写出来给你们分享,更多的是总结面试中遇到的问题以及之后学习过程当中的方向。只有这样才能和社会接上轨迹。面试
我面试的是美团,这家公司还算不错的,至少在我印象中仍是挺好。技术面试一共是三面+HR。下面作一个总结算法
一面面试官的思惟很是跳跃,常常我说到一半的问题,忽然询问其余相关问题,而后回答完再继续以前的说下去,有些许不适应这个节奏。顺序可能不太对。数组
1.类的加载过程,Person person = new Person();为例进行说明。框架
2.JVM相关知识,GC机制。异步
3.类的加载器,双亲机制,Android的类加载器。ide
4.Android中进程的级别,以及各自的区别。学习
5.插件化原理。优化
6.集合框架,list,map,set都有哪些具体的实现类,区别都是什么。插件
7.concurrentHashmap原理,原子类。线程
8.volatile原理。
9.Binder机制。
10.View的绘制流程,事件传递机制,Handler异步消息机制。
11.Interger中的128(-128~127),这里考的是常量池的概念,这个没回答上来。
12.线程池的相关知识。
13.Handler机制,HandlerThread实现等等。
14.LRUCache算法是怎样实现的。
就这样第一面基本结束。一共问了14个问题,其中美团的手写算法在业界算是比较出名,不少小伙伴可能卡在手写算法上。而后就是一些Android和Java的细节性东西,这些基础内容只要有1年经验的都基本能说出个一二三。
面试官可能没注意我是海外党有时差,凌晨四点来了通电话约时间,还好顺利的约到次日上午~
二面面试官感受专业了不少,问问题也比较灵活。有时候会有点像在怼的打断而后追问,可是有答得很差的地方也会很耐心的引导
1.写个快速排序
2.生产者消费者伪代码(由于和面试官思路不一样加上紧张,代码反反复复改了好久,面试官也一直在写代码引导我)
3.顺带讲了一下wait() await()这一系列方法
4.如何用数组实现队列(直接说抽象的环,但面试官一直在引导细节如何更优化,好比怎么判断队满,决定插入位置怎么省去if…感受面试官真的很耐心)
5.如何用数组实现栈
6.弱引用,有什么用?有没有用过?
7.若是写一个库中存在的类,包也同样,会怎么样?
8.提到类加载要确保类的惟一性,怎么确保?
9.三次握手,为何要三次
10.TCP怎么保证可靠
11.若是包乱序到达会发生什么
12.进程和线程的区别
13.追问进程之间为何会相对比较独立?电脑上看起来运行着不少进程,是怎么隔离的?
14.若是一个进程须要一直读写内存,会影响其余进程吗?(这里我开始结结巴巴瞎说了…面试官安慰了一下)
15.知道几种单例模式的写法?有什么优缺点
16.Hashmap原理
17.扩容具体是怎么作的?本来的元素要怎么放进新数组?
1. 自我介绍
**2. 项目(项目怼了挺久的,一直深挖。建议你们要很是熟悉简历上的项目,一些细节也要注意到,这个环节差点被怼哭