度小满JAVA后开实习面经
视频面 2.15 , 16:00, 45min
1. 自我介绍
2. 简单的聊了一下项目
3. 递归的一些特点
递归的两个重要时间点,前序和后序,前序多用于回溯,后序多用于动态规划,递归的出口;
4. HTTP , TCP ,Socket之间的关系
HTTP是应用层协议,使用了传输层协议TCP来保障数据报文能够传输给对端,TCP使用了Socket来进行网络通信;
5. 端口的作用
主要用于传输层识别接收到的数据包发送给哪一个应用进程,答了端口占用的问题,TCP和UDP使用同一个端口不会发生端口占用,因为在内核中TCP和UDP是两个不同的模块;
6. 使用Socket编程的流程
服务端:创建socket对象,bind端口,监听端口,accept()阻塞等待获取连接对象的文件描述符,recv()接收客户端发来的信息,close()关闭socket对象;
客户端:创建socket对象,bind端口,connect()连接指定ip端口的服务器,send()数据信息,close(),关闭客户端;
7. socket编程中客户端和服务端如何区分本次数据报文的结束
答了两者约定一个结束符,比如’/n‘,当读取到这个约定的结束符之后就认为本次信息报文结束;
8. 发起一个HTTP请求到收到一个响应中间所发送的事情
先进行DNS获取该域名的IP地址,到传输层给数据包进行切片,加TCP头,到网络层加IP头,使用ARP协议广播获取目标IP的MAC地址,数据链路层加上MAC头,发出去之前先查看路由表查到下一个ip地址,再通过网卡发送出去,中间在网络中经过一系列的路由器和集线器以及查表过程最终到达目标服务器主机,服务器网卡接收到请求数据包之后再层层拆掉MAC头、IP头、TCP头最终发送到目标应用进程,该进程将响应的数据包再如上步骤发送给客户端;
9. 泛型、反射的理解和应用场景
泛型多用于集合中,使得可以在编译时发送错误而不是必须要到运行时才报错,介绍了泛型擦除;(面试官说泛型的应用场景答的太少)
反射是在运行时获取类信息,多用于多态时接口对象调用实例对象的方法,这时只能通过反射根据上下文信息获取实例对象的类信息,才能得到该实例方法在方法区中方法表中的偏移量进而才能成功调用;介绍了实例对象、类对象、类的元数据之间的引用关系
10. 给了一个场景,大概就是问的就是JAVA中值传递还是引用传递的问题
JAVA中只有值传递,没有引用传递;
11. 最开始让我手写快排,我说可能会有边界问题,他改说让我写一个简单的DFS模板;
12.MySQL中事物的四种隔离级别,解决的问题,性能比较
13. Spring 的IOC 和 AOP
答了IOC的思想,DI的对IOC思想的实现,IOC带来的好处; AOP答了面向切面编程的好处作用,它的实现动态代理,JDK动态代理和CJlib动态代理的过程和差别点;
14. 反问闲聊;