关于人文方面的问题html
关于 Java 方面的问到的知识点java
以上就是关于 Java 所问道的知识点,记得不是太清楚了,待补充。。。android
关于 Android 方面的问到的知识点程序员
第一面面试
1 手写算法题。一共有3个,面试官随机选择一个。猫扑素数;1到n,求1的个数;单词反转。
2 Activity的加载模式。
standard,singleTop,singleTask,singleInstance。
能够参考:https://developer.android.com/guide/components/tasks-and-back-stack.html
2.1 何时会用到singleTask?
在MainActivity的时候用到
3 Handler机制?
MessageQueue,Looper等。
3.1 一个线程是否只有一个Looper?
3.2 如何保证一个线程只有一个Looper?
参考:ThreadLocal
4 多线程的方式有哪些?
1) new Thread()
2) AsyncTask
3) Handler
4) IntentService
5) ThreadPoolExecutor
5 ANR异常发生条件
1)5s内没有响应用户输入事件
2)10s内广播接收器没有处理完毕
3)20s内服务没有处理完毕
5.1 如何分析ANR
log+trace.txt
6自定义View和ViewGroup
说一下本身定义的组件就行
7 事件处理
分发,拦截,处理。只是View没有拦截处理
8 GC算法
标记清除,标记整理,复制,分代收集
参考:http://www.jianshu.com/p/7c708a66ff42
把上面文章弄懂了,就能刷过GC
9 四大引用
强,软,弱,虚,并说明下合适GC
10 动画
View动画,属性动画,帧动画。再说下View和属性动画区别。
参考:https://developer.android.com/guide/topics/graphics/overview.html
11 Dalvik和Art区别?(Just In Time和Ahead Of Time)算法
就这样第一面基本结束。一共问了11个问题,其中美团的手写算法在业界算是比较出名,不少小伙伴可能卡在手写算法上。而后就是一些Android和Java的细节性东西,这些基础内容只要有1年经验的都基本能说出个一二三。设计模式
大概过了10分钟,接下来是缓存
第二面安全
1 OkHttp原理?
2 Retrofit原理?为什么用代理?代理的做用是什么?
3 ButterKnife原理?用到反射吗?为何?
4 ANR异常如何查找并分析?
5 JVM内存模型?性能调优?
6 垃圾搜集算法有哪些?G1算法?
7 Http和Https的区别?
1)Https是ssl加密传输,Http是明文传输
2)Https是使用端口443,而Http使用80
3)HttpsSSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比Http协议安全
4)Https协议须要到CA申请证书
8 加密算法有哪些?对称加密和非对称加密的区别?
MD5,SHA1,Base64,RSA,AES,DES
对称:使用相同密钥,须要在网络传输,安全性不高。
非对称:使用一对密钥,公钥和私钥,私钥不在网络传输,所以安全性高。
9 TCP的三次握手?两次行不行?为何?TCP攻击知道吗?如何进行攻击?
10 内存优化如何作?
11 看过那些源码?
12 会对代码进行review吗?什么时候review?怎么review?
13 项目中遇到的让你棘手的问题?多久解决,怎么解决?(考的是你发现问题和解决问题的能力)
14 如何学习?什么时候学习?怎么学习?学习渠道?(考的是学习能力)
就这样,第二面结束了。能够看出,第二面的难度会比第一面大一点,可是还好,基本都是经常使用的内容,深度会偏向原理性质。这就说明在平时的编码过程当中,须要多多思考,多看源码实现方式,而不要一味着去写代码。程序员会写代码,但不要作一个只会写代码的程序员。咱们的思惟方式是不可替代的。网络
大概过了10分钟,开始进行第三面面试:
第三面
1 前几回面试感受如何?
2 你如今的APP日活是多少?
3 你如今如何处理崩溃日志?
4 你以为小团队好仍是大团队好?(这个问题不能直接回答好和很差,否则掉坑里了)
5 你的优势和缺点说下?
6 你的发展方向说下?是先讲究宽度仍是讲究深度,为何?
7 为何离职?
8 其余小问题,如哪里人啊?如今工资怎样?要求如何,什么时候到岗啊?有什么问题要问个人吗?
就这样,第三面结束了。能够看出,第三面面试官不会考察你的知识细节,而是问一些形而上的知识。他是从总体方向上去把握面试者,每每最后一个面试官对你起到决定性做用。固然,能见到最后一面面试官,说明你前两面都已通过了。
总结
此次面试感受还不错,美团的开发同窗待人方面很随和。很喜欢这种氛围。结果不重要,重要的是过程。只要你有实力,就别担忧。若是很差好学习,就算背了面试题,又能如何?同样会在面试中PASS。因此说,平时写代码的时候须要多多思考,不必定用到才去Google,对于一些新的技术,要不断追求同时别忘记了基础很重要,基础,基础,基础,重要的事说3遍。
在接下来的学习和工做中,须要学习继续探索如下问题。
1 Java基础知识。线程,java虚拟机,内存模型等。
2 Android基础知识。官方API,经常使用控件源码,自定义控件,动画,性能分析等。
3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。
4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。
5 沟通能力和相处能力,这是软实力。很是关键,若是你技术很好,可是相处起来很困难,我想面试官也不太愿意招你。
最后,向您请教一个问题呗?您是如何学习的?如何对知识进行管理和规划?如何善用记忆七天遗忘曲线?如何对碎片化的时间进行管理?这个问题是我一直在黑暗中摸索的问题,但愿你们踊跃留言?一块儿进步!