美团酒旅Java一面面经
-
项目介绍
- 怎么保证通信的安全
- 除了 HTTPS 呢,如果对方知道了你们的协议该怎么办
-
死锁是什么
- 什么算法可以避免死锁
- 银行家算法是怎么实现的
- 除了银行家算法有没有其它的可以避免死锁的方法
- 什么算法可以避免死锁
-
进程和线程的区别
- 两个进程之间有哪些通信方式
- 线程的生命周期
- 不同状态之间是怎么转换的
-
段式管理和页式管理是什么
-
有哪些常见的内存置换算法,分别解释一下
-
说一下 Lnuix 文件系统
-
说一下常用的 Lnuix 命令
- 怎么删除一个进程
- 怎么找到这个进程
-
讲算法:把中缀表达式转换成波兰表达式和逆波兰表达式
- 逆波兰表达式有什么好处
-
讲算法:一堆数据什么时候使用冒泡排序、什么时候使用快速排序
- 快速排序什么时候退化成 $O(n^2)$
-
讲算法:手写出二叉树的前序、中序、后序遍历
-
浮点数在系统中是如何表示的
- 比如 0.000001 是如何存储的
- 整数一块、小数一块的方式对于一堆小数使用好吗
-
如何用一整块数组实现链表(我现在也不太明白意思,我回答的是通过数组中有一个 nextIndex 字段来表示该链表下一个 index 来实现链表)
-
用小名给小红转账一百这个例子来解释一下 ACID,并且是如何实现的(好家伙,判断是不是背八股文的利器啊)
-
事务有哪些隔离级别
- 脏读、不可重复读、幻读分别是什么,举个例子
-
给两张表
-------Table: Student------- Integer id primary key Integer name -------Table: Score--------- Integer id primary key Integer score Integer sid (student.id)
-
写出一句 SQL 查询成绩最高的学生的姓名和成绩
// 我写了子查询 SELECT name, score FROM Student, (SELECT * FROM Score where score = MAX(score)) AS 'temp' WHERE Student.id = temp.sid
- 针对这个 SQL 怎么加索引(我回答的是 score、sid 组合索引)
-
left join 和 right join 的区别
-
-
一个 MySQL 服务端包括哪些部分组成的
-
InnoDB 是怎么存储的
- B+ 树索引是怎么存储的
- B+ 树一定是三层吗,怎么保证
- B+ 树索引是怎么存储的
-
Java 抽象类和接口有什么去呗
- 抽象类可以有构造方法吗
- 抽象类没有抽象方法可以吗
- 非抽象类可以有抽象方法吗
-
Java 内存结构了解过吗
- 堆里面是怎么分的
- 为什么要分为 survivor1 和 survivor2
-
synchronized 关键字怎么实现的
-
volatile 关键字是什么
- 为什么 volatile 保证了可见性
-
Java 泛型如何实现的
-
CPU 大端和小端了解吗
- 写一个程序判断 CPU 是大端还是小端
-
XSS 攻击是什么
- XSS 会带来什么危害
-
SQL 注入是什么
- SQL 注入是如何防范的
-
Redis 有哪些数据结构
- Hash 是如何实现的