2017年4月安卓面试总结
坦白说啊,我是个很懒的人。看我大学时注册的CSDN帐号,毕业后将近四年才写第一篇文章就能看出来。本来想就这样懒下去的。四月份的时候裸辞了,然后开始面试,在面试时经常会被问到有没有博客。因为面试时间很短,面试官很难在这么短的时间内了解你是什么样的人,有什么样的能力。可能有些东西本来会的,面试时却因为紧张之类的原因一时回答不上来,从而错失良机,想想还是蛮遗憾的。做为第一篇博客,我也不知道写点儿什么好,就把四月份的面试题总结一下吧。先大致写个梗概,可能有点儿乱,也有些遗漏,后面会慢慢补充。如果有答错的地方,请私我或评论。
一、Java部分
1. xml与json的比较
2. 实例化对象有的方法有哪些?
- new关键字
- 反射
- clone()
- 读取序列化流
- 工厂模式(这个其实不要回答,因为它本质上还是使用前面4个,只是网上有些文章会把它也列出来。)
3. 类在JVM中的执行过程
4. [重要]OSI七层/五层模型,及各层的作用,一些常用协议,如TCP\IP\UDP\HTTP\Socket等位于模型中的哪一层。
5. [重要]TCP、IP、UDP、HTTP、HTTPS、Socket等各种协议的介绍、原理、特点、优缺点、相互之间的比较。Http协议经常会问到它的请求结构、返回结构甚至状态码。扩展的会有URL,URLConnection,HttpUrlConnection,HttpClient的介绍、特点和比较。会问到安卓6.0时为什么弃用HttpClient而采用HttpUrlConnection.
6. [重要]设计模式。 23种设计模式必须了解其中将近一般比较常用的,熟悉五六种最常用的,能理解它的方式,最好能手撸出来。
7. [重要]集合之间的比较:数组,List,ArrayList,LinkedList,Set,HashSet,TreeSet,SortedSet,Map,HashMap,SortedMap,TreeMap各自的特点,数据结构,相互之间的比较
8. [重要]堆和栈的定义、区别。如何使堆溢出,如何使栈溢出。
9. [重要] HashMap和HashTable之间的比较
10. [重要] 数组结构和链表结构的比较,单项链表双向链表的比较
11. [重要] String ,StringBuffer,StringBuilder之间的比较
12.HashMap非线程安全,怎样解决使其线程安全?
外部加同步关键字控制,或使用ConcurrentHashMap
13.常用的类型中,有哪些是数据安全的?
如StringBuffer,HashTable,Concurrent包下的各个类。
14.多个线程顺序执行?
thread.join();