个人介绍:个人经历:基本经历,学了哪些课程,掌握了哪些测试技能,实习经历
- JDK1.8 支持的新特性
- Lambda表达式
- 函数式接口
- *方法引用和构造器调用
- Stream API
- 接口中的默认方法和静态方法
- 新时间日期API
2.static和final的区别
- 静态方法final
- final修饰的常量,不可变的,对象里面的内容可变
- static 修饰的成员变量 全局,内容不可变的,引用可以变的
- 数组和链表的区别
- 链表与数组在计算机中存储元素采用不同的物理存储结构,数组是顺序存储结构,数组用一组地址连续的存储单元来存储表中的元素;链表是链式存储结构,链式存储结构不要求逻辑上相邻的两个元素在物理位置上也相邻,链表元素除了存储元素本身的数据外,还需要存储一个指向下一个元素的位置数据,程序可以通过该信息访问到下一个元素
- 数组插入和删除,查找比较快,支持随机访问;链表插入删除快
- 哈希map
- 空间冲突问题:不严重是二叉树,集中在一个链表上,查找效率比较慢;严重是一颗红黑树;长度等于8的时间
- 进程和线程区别
- 进程是操作系统资源分配的最小单元;进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序运行的一次运行过程
- 线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务
- 进程的创建、销毁和切换的开销都远大于线程
- PID:进程ID,是进程的唯一身份标识,但是它不是固定不变的,是每次启动进程时动态分配的
- 进程状态:①新建状态(NEW) ②就绪状态 ③运行状态 ④阻塞状态 ⑤销毁状态
- JVM
- 传输层 TCP UDP 的区别
- TCP 是面向连接的、可靠的流协议。。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能
- UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理
- TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用
- TCP:几乎所有必须获取所有传输数据的地方:卷筒纸、SSH,FTP,telnet、SMTP,发送邮件、IMAP/POP,接收邮件;
- UDP:如果总是得到所有数据,那么你不在乎的任何东西;隧道/ @-@(丢失的数据包没问题 - 隧道协议负责处理)、媒体流(丢帧可以)、如果你得到每次更新都不关心的游戏、本地广播机制(在不同机器上运行的相同应用程序"相互发现")
- 三次握手
- 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息
- 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。
首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。 - 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
- 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。
- 为什么是三次握手,不是两次?
弄清这个问