0、自我介绍
1、Java中的集合类有哪些了解呢?
2、项目中用到过哪些缓存?
3、ArrayList和LinkedList的区别?
4、linux了解怎么样。各个用户之间的权限了解吗 ?
5、手写代码:求两个链表相交。
6、新建线程的方式,有什么区别
7、Thread的run方法和start方法的区别是什么?
8、怎么关闭线程?
9、TCP为什么是三次握手和四次挥手?
10、TCP和UDP区别?
11、聊聊你的项目经验,最大的成就感是什么?
1.
2. 本地缓存:ehcache
分布式缓存:redis、memcached(KV缓存)
3. 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于双向链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4.root用户:超级管理员,#开头。
普通用户:默认家目录所有者权限,其他目录或文件权限依据umask。
umask值一般为022,文件755,目录644
5.http://blog.csdn.net/derrantcm/article/details/47855991
6.1.新建类,继承Thread类,重写run方法
2.实现Runnable接口,重写run方法 new Thread(Runnable r).start()。
3.实现Callable接口,重写call方法
2和3区别:call有返回值,run没有
call可以抛异常,run不可以
运行callable任务可以拿到一个Future对象表示异步计算的结果
Callable接口看做Runnable接口的增强版
4.利用jdk线程池框架创建
7.
run()
只是一个普通的方法调用,不会开启新的线程。
start()
会开启新的线程,分配新的资源。里面的变量互不影响。
8.1.使用退出标志,使线程正常退出,也就是当运行方法完成后线程终止
2.使用stop方法强行终止线程(这个方法不推荐使用,因为停止和暂停,恢复一样,也可能发生不可预料的结果)
3.使用中断方法中断线程
9.tcp建立连接是三次握手,简单概括:请求---应答---再确认
tcp关闭连接是四次挥手
由于TCP链接是全双工的,因此每个方向上都必须单独关闭。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
3 由B 端再提出反方向的关闭请求,将FIN置1
4 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
10.1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。