一面(一个半小时)
1. 手撕算法,两个链表,每个结点表示一位数,链表相加并返回结果链表。如:1->2->3加6->6就是1->8->9。(有给提示)
2. 手撕算法,字符串转int。(有指出两个我没有留意到的坑)
3. 自我介绍一下,实习经历、学习方法抓住问了一下。
4. 实习经历问了一下怎么学习,怎么从不懂任何相关api开始开发这个项目,问了Android camera相关的知识,问surfaceView的原理,camera有学到什么印象深刻的东西。
5. 学习方法问看了什么书。
6. Java Object有什么方法。
7. HashCode方法讲一下。
8. Equals方法讲一下。
9. 线程和进程的区别。
10. 怎么创建线程。
11. 线程池有了解吗,什么原理。
12. 线程之间如何同步。
13. Synchronized锁住对象和锁住Class的区别
14. ReetrentLock的原理,我说没了解过,答了Synchronized的(虽然也答得不太好)。
15. Set,List,Map的区别,和联系。
16. ArrayList和LinkedList的区别。
17. Collection和Collections的区别。
18. Android有什么布局,描述一下。
19. 约束布局描述一下。
20. include、merge 、ViewStub作用
21. 四大组件有哪些,有什么作用。
22. Service启动方式。
23. Http有什么请求方式。
24. Http header有哪些字段。
25. Https描述一下。
26. Http属于哪一层?
27. 计网一共有几层?
28. TCP建立连接和释放连接描述一下。(三次握手四次挥手,扯了一下syn洪范攻击)
29. 有什么想问的
二面(一个小时)
1. 自我介绍一下。
2. 你是大三吗?基础应该不错吧来题算法:二叉树的对称性
3. 知道线程安全吗?ConcurrentHashMap保证线程安全的原理。我分别讲了Java1.7和Java1.8的
4. 讲一下乐观锁和悲观锁,区别,用法,Java里面哪些锁是乐观锁哪些是悲观锁。
5. 乐观锁怎么实现,乐观锁会阻塞线程吗。
6. 给了个清单文件的写法,分析一下结果,以及为什么:
<manifest package="com.myApp">
<activity android:name="ActivityA" android:launchMode="singleTask" />
<activity android:name="ActivityB" />
<activity android:name="ActivityC" android:taskAffinity="com.someting" />
操作:
启动Activity A
Activity A启动Activity B
Activity B启动Activity C with FLAG_NEW_TASK
Activity C启动Activity A
7. 回到A的时候,A会被回调什么函数。
8. 如何安全停止一个线程。(不懂,没答上来)
9. 不要太在意拼写/语法方面的问题,讲一下这段代码有什么问题:
Activity:
void onCreate()
{
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.getInt(MY_PREF);
}
10. 对安卓进程的优先级有了解吗。没
11. 进程和线程的关系。本质区别?
12. linux和unix进程/线程。
13. 讲一下实习经历/项目。在项目中负责哪一部分的工作。怎么解决camera预览拉伸问题。
14. 讲一下mvp,你还知道什么模式?mvvm是怎样的。
15. 职业规划?有没有想转产品。
16. 你这个个人项目是怎么策划的。展示了一下。