面试时间 2017-9-21
一.计算机网络
1.TCP和UDP的区别?广播是用TCP还是UDP?
2.TCP四次挥手的过程?等待超时是发生在哪一个阶段?
二、操作系统
1.进程通信的方式?共享内存是如何做的?
2.Linux命令会哪一些?Top显示的信息有哪一些,包含线程信息吗,负载是指什么?
三、Java
1.多线程的生成方式
四种:继承Thread,实现Runnable接口,使用Callable和Future,使用线程池
区别是:继承Thread比较简单,但是该类无法继承其他类。一般比较常用的是Runnable接口,此外实现Runnable接口的类创建的多线程可以共享线程类的实例变量。Callable和Future可以有返回值。
2.线程同步的方式
三种:互斥同步(Synchronized+ReentrantLock)+非阻塞同步(CAS:Atomic的原子自增运算)+无同步方案(ThreadLocal)
3.接口和抽象类的区别
4.如何实现多线程下的i++
AtomicInteger
5.hashmap的底层结构,hash冲突的解决方法有哪些?LinkedHashMap和TreeHahsMap的区别
6.jvm的内存模型
7.一个类有几种方式使之不能被实例?
四、数据库
1.Mysql引擎知道哪些?Inodb和imysm的底层实现区别?
五、算法
1.堆排序的时间复杂度怎么算的?
2.手写链表倒序算法