美团android开发(一面)面经
一面 4.23 电话面(1小时30分钟)
个人介绍:本科毕业于滑铁卢大学,专业计算机科学与技术,有两个实习经历。
- 自我介绍
- 问项目,一个应用软件的开发
- 项目中你遇到过的困难,你是怎么解决的。(有一个困难问我为什么不用线程池。。。我说我没想到)
- android中创建一个线程的方式,以及如何跟主线程交互
- android handler机制 message message queue,looper
- binder机制
- listview和 recyclerview 的区别
- 线程和进程的区别(资源分配,调度,系统开销,通信方面,进程切换要中断陷入内核态)
- 进程间是怎么通讯的(pipe,fifo,信号量,共享内存,socket)
- 造成死锁的必要条件(互斥,占有和等待,不抢占,环路等待)
- 操作系统虚拟内存和物理内存关系,内存分页算法(学了好久了,当时有点忘了,答得很不好)
- 你是怎么认识操作系统的(我也不知道咋答,就结合上面说的总结理一下。。。)
- 输入一个美团url,出现网页都发生了那些过程
- 每个层级都发生了什么事(这个我当时就懵逼了,网络层和数据链路层发生了啥忘记了。凉)
- tcp和udp区别
- tcp是怎么保证可靠传输的
- ArrayList和LinkedList的区别
- hashmap的hashcode 方法, put方法
- hashmap的结构形势(数组,链表,红黑树)
- hashmap的扩容机制,容量为什么要为2^n
- hashmap是线程安全的么?
- currenthashmap为什么是线程安全的,它是怎么实现的。(问的很细,我当时还答了size()进行了尝试操作)
- ReentrantLock和synchronized的区别
- jvm组成部分,静态变量存在哪个区
- gc算法,四个(标记清除,标记整理,复制,分代)
- 如何进行标记的(gc root)
- 为什么要分代
- 手撕两个单例
- 双重校验锁方法为什么要双重校验
- volatile的作用
- 静态内部类实现 final和static的作用 什么原理
总结:虽然问的知识都很基础,但感觉问的会非常细,很多东西太久不复习是会忘记的。总体考察的知识面还是计算机基础,只不过
更深入。现在还没消息估计是凉了,网络那个部分答最不好,学的时候掌握的就不好。
最后推荐给大家cyc的github,上面的问题都有答案,我复习了一天全是看的这个:https://github.com/CyC2018/CS-Notes