美团Java开发实习面经(一面)
日志
美团一面(50min)
操作系统
-
线程和进程区别
进程是资源分配的基本单位,线程是CPU调度的基本单位。在具体的调度上面进程除了保存相关的状态信息之外,还会将页表中的页表项更新,也就是更新虚拟地址,将进程需要的资源调入内存。这是根本的不同 基于上面的不同,进程因为分配的资源是独立的,相对于线程来说更加安全 -
什么叫做守护进程
我是将守护进程理解成后台进程,不能够独立运行。 -
解释下僵尸进程
操作系统中,父进程创建了子进程之后,需要wait或者waitpid()方法观察子进程的状态。如果父进程不调用这两个方法,那么子进程保留的一些信息(进程号)就不会释放,如果操作系统中存在大量的僵尸进程,那么会导致最后操作系统没有进程号分配给新的进程 -
平时有处理过僵尸进程吗?
操作系统有学过,通过两次fork可以避免这种情况。具体不太记得了 -
举个例子,如果系统中突然出现很多僵尸进程,应该怎么做?
突然出现大量的僵尸进程,肯定是父进程有问题的。这种情况下直接kill掉父进程,使得僵尸进程变成孤儿进程,交由操作系统的init进程进行处理
锁
-
乐观锁和悲观锁有了解过吗?
-
数据库中悲观锁怎么实现?
-
悲观锁和乐观锁哪些场景能用?
乐观锁容易导致CPU忙等待,适合竞争不激烈的情景。如果一个资源竞争非常激烈的话,直接悲观锁就好了。 -
Java里面悲观锁和乐观锁有用过吗?
-
乐观锁除了忙等待还有什么问题吗?
ABA问题 -
描述一下ABA问题
-
ABA问题有什么方式去解决?
没有实际应用过,版本号(个人一开始说的是时间戳,面试官问了时间戳使用什么精度能解决这个问题,然后我反应过来要用版本号…..)
计网
-
解析网址
-
你刚刚说到了TCP,那么建立一个TCP/IP传输链路需要哪几个要素?
目的IP、源IP、目的端口、源端口和协议类型 -
那HTTP协议是有状态协议还是无状态协议呢?
-
它为什么是无状态协议
这里把我问懵了,老老实实说不知道之后面试官就说两次请求之间是没关系的呀,前一次提交的表单,后一次是没有相同的信息的…….. -
HTTP有哪些状态码?分为哪几类?
-
301和302有什么区别呢?
不了解。然后让我回去看看这块,业务要用。 -
TCP状态的变化?
-
有用过网络工具吗?
计网用过wireshark -
有没有用过linux相关的工具呢?
用过netstat(不了解的真的不要说……这个命令我只在查IP的时候用过) -
那netstat怎么查看端口有哪些连接呢?
不会
数据库
-
MySQL中的join和left join和right join有什么区别?
-
有哪些事务隔离级别
-
解释一下幻读?MySQL RR级别是怎么解决幻读问题?
RR并没有完全解决幻读问题。innoDB可以通过MVCC机制,可以一定程度上避免幻读问题的产生 -
当前读和快照读有什么区别?
-
RR级别下怎么进行当前读?
select ... for update设X锁。问我还没别的吗?我没反应过来,然后面试官就说select ... lock in share mode也是可以的…
Java
-
volatile有哪些特性?
volatile实际上是通过读写屏障实现的。读写屏障就有两个作用:缓冲失效和阻止指令重排序 -
那通过双重判断实现一个单例模式吧
-
这里面的volatile起到什么作用呢?
-
Java里面异常的继承结构清楚吗?
-
平常使用中有哪些RuntimeException?
1/0就是一个。还有别的吗?数组越界、空指针 -
Java多线程的线程池参数
-
描述一下线程池的调度流程?
我说偏了….. -
写个算法吧:两个栈实现队列。(然后面试官电脑快没电了下楼拿电源)
-
说一下思想吧
-
知道Java中的引用级别吗
软引用忘记了 -
它们之间有什么不同看过吗?
-
能举一个使用非强引用的例子?
之前看哪个类中的源码看到过,好像是ThreadLocal中的哪个Map。然后面试官肯定了我说的,不过看我不是很熟就让我等下回去看看 -
Java虚拟机新生代S0和S1有什么作用?
-
说下项目架构。
然后问了项目的一些东西
问问题
#实习##美团##Java工程师##面经#