先来个自我介绍
Blablabla
下面是正式问的问题,总体来说比较基础。面试官大佬是沿着问题来深入继续问的
1. 对线程同步/互斥理解
2. 锁的概念
a) 包括在wait时要怎么唤醒
b) Wait 和 sleep的区别
3. Synchronized 和 Lock 区别
4. 死锁的原因
5. 进程和线程的区别
6. 进程之间的数据共享
a) 顺便问了下安卓四大组件
7. 进程最大能占用多少内存空间
8. 设计模式(我说了个生产者消费者模式
9. 用synchronized编程生产者消费者模式
10. Activity的启动模式有哪些
下面因为知道我不是科班出身(大概),然后问了些比较基础的算法题(忘了顺序
1. 红黑树(不过我不会
2. 哈夫曼编码原理
3. 二叉树知道吧(了解了解),那写个二叉树的广度遍历呗
于是我没听清广度,不小心写了个深度遍历。然后面试官开始引导应该咋写。然后我ummmmm强行按照理解写了下,然后他再提示了下……最后没写出来
4. 堆的概念。堆排序的概念(懂概念
5. 编程堆排序(不会again
算法的大概是这些了,这部分扯了有半个多小时的样子
然后大致说了说
1. JVM的内存模型
2. 方法栈的概念,存放的东西
3. 假如从方法A跳到方法B,B 里的return机制是一个怎么样的过程
结果我说JAVA里的我不大清楚,但是可以扯一下做C/C++里的原理(我想大致是差不多的
4. JVM的垃圾处理的时间(这个是因为扯了点C++方面的东西,然后我提到了一下用delete清内存,于是问这个)
5. 网络模型(http TCP/IP 之类的,不过我不大会
6. Hashmap & 是否线程安全
7. 怎么优化数据库
好了大概是这些,总时长是1小时11分钟。
应该还有一些内容忘记了,下次可以录个音
说起来面试前准备的东西用到了60%,还远远不够