Java后端常见面试题
Java后端面试中遇到的高频面试题(乱序,持续更新)
1、说一下深拷贝和浅拷贝
首先要区分两个概念,基本数据类型和引用数据类型。比如,在做=等号赋值操作时,基本数据类型直接拷贝这个值,而对于引用数据类型则是指向同一个引用,并没有创建新的引用对象。
总结回答
- 浅拷贝:复制的对象的所有变量的值都和原来的对象相等,所有的引用类型对象都和原有对象指向同一个引用
- 深拷贝:深拷贝会将原有对象的所有引用对象也拷贝一份,复制的对象中的引用指向的不是原有对象中的引用,效率较慢(可以回答常用的如序列化操作,引导面试官往序列化方向提问,前提是你也了解序列化操作)
2、说一下进程和线程的区别
① 进程是资源分配和管理的基本单位;线程是任务调度的基本单位
② 进程之间拥有独立的地址空间和资源(如cpu,内存,IO);线程之间共享本进程的地址空间
③ 进程更具健壮性,一个进程出错由于保护模式不会影响到其他进程,而线程出错会导致整个进程无法运行
④ 进程之间切换消耗资源大,开销大;频繁切换使用线程
⑤ 每个独立的进程有程序入口和顺序执行序列,执行开销大;线程不能独立运行,必须依存在进程中。
3、请求转发和重定向的区别
① 请求转发是服务器行为;重定向是浏览器行为。理解如下
请求转发过程为:浏览器发送http请求,web端收到请求,服务器调用内部方法进行请求处理和转发,将目标资源返回浏览器。(这里的转发地址只能是同一个web容器中的url) 地址栏显示的仍然是第一次请求的地址
重定向过程为:浏览器发送http请求,服务器接收并相应302,并把新的location返回给客户端,客户端收到302码,重新发送新的请求到location对应的url,对应的服务器返回请求的资源。
② 请求转发传输的信息不会丢失;重定向会

浙公网安备 33010602011771号