小米深圳软件开发工程师Java方向一、二面
11.16 一面 11.17 二面
两轮面试都有自我介绍,主要八股+算法+闲聊,总时长两个多小时,回忆到的问题汇总如下:
Java基础
- Java语言的特性
- 运行时多态和编译时多态
- 重写和重载
- Java原生数据类型及所占字节
- boolean类型是否占固定数量字节
- 反射作用以及优劣
- 泛型的使用
- equals和==的区别
多线程
- 进程和线程的区别
- Java线程创建方式
- execute()和submit()的区别和线程池的作用
- Runnable和Callable的区别
- synchronized和volatile的区别
- Java内存模型(JMM)
- 死锁必要条件及口述Java代码示例
集合
- 常用的集合
- List、Set、Map的区别
- HashMap和HashTable的区别
- HashMap线程安全问题及替代类
- ConcurrentHashMap线程安全原理
设计模式
- 阐述了解的设计模式
- 单例模式的种类
- 懒汉式线程安全实现
- 双重校验原因及volatile修饰引用的作用
- 内存泄露的概念和ThreadLocal
JVM
- JVM作用及组成
- 堆和栈的区别
- 如何判断对象为垃圾
- 垃圾回收机制
- 类加载过程
- 双亲委派机制作用和流程
计算机网络
- 由下往上说出OSI七层模型、四层模型
- TCP/UDP的区别
- TCP三次握手/四次挥手的原因,两次握手的不足(DoS攻击)
- TCP滑动窗口机制
- 常用的端口及其对应功能
数据结构与算法
- 常见排序算法
- 快速排序和冒泡排序的异同
- 描述快排过程
- 对红黑树的了解
- KMP算法作用和原理,对哈夫曼树的了解
算法题
LC 240. 搜索二维矩阵 II
LC 113. 路径总和 II
LC 113. 路径总和 II
没有记录面试问题,基本凭印象,有些问题可能没有记住......