java高级面试题的难点分析
本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.jsonp的原理是什么
JavaScript 是一种在 Web 开发中经常使用的前端动态脚本技术。在 JavaScript 中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于 JavaScript 代码能够访问的页面内容做了很重要的限制,即 JavaScript 只能访问与包含它的文档在同一域下的内容。
jsonp的最基本的原理是:动态添加一个<script>标签,使用 script 标签的 src 属性没有跨域的限制的特点实现跨域。首先在客户端注册一个 callback, 然后把 callback 的名字传给服务器。此时,服务器先生成 json 数据。然后以 javascript 语法的方式,生成一个 function , function 名字就是传递上来的参数 jsonp。最后将json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器,解析 script 标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里。
2.Thread 类中的 start 和 run 方法有什么区别
start方法被用来启动新创建的线程,而run一般是线程对应的业务逻辑。
另一方面start方法内部调用了run方法,这和直接调用run方法的效果不一样。当你调用run方法的时候,只会是在原来的线程中调用,没有新的线程启动,start方法才会启动新线程。
3.jvm的类加载机制
jvm的类加载过程一共有以下几个步骤:
①加载:将二进制.class文件加载进jvm虚拟机
②验证:验证字节码文件是否符合Jvm规范,不会对jvm造成损害
③准备:为类变量分配内存,设置类变量的初始值
④解析:将常量池中的符号引用替换为直接引用
⑤初始化:调用类的构造器,将类初始化
⑥使用:完成相应调用
⑦卸载:被垃圾回收器回收
其中,②~④三个步骤统称为连接.
jvm的类加载器采用双亲委派模型,在类加载时不会先直接调用自己的类加载器,而是去尝试调用其父类加载器,父类加载器处理不了会向上传递,直到顶层的bootstrap类加载器也完成不了时,才会使用该类的类加载器,这样可以保证安全,避免我们哪天自己定义了一个叫Object的类,被jvm混淆。
4.请求转发和重定向的区别?
(1)请求转发是一个请求一次响应,而重定向会是两次请求两次响应。
(2)请求转发地址栏不变化,而重定向会显示后一个请求的地址。
(3)请求转发只能转发到本地项目其他servlet,而重定向不只能重定向到本项目其他servlet,还能定向到其他项目。
(4)请求转发是服务器端行为,只需要给出转发的servlet路径,而重定向需要给出request URI,即包含项目名。
(5)请求转发带值,重定向不带值。
5.jdk1.7-1.11新特性以及lambda表达式使用
jdk1.7新特性:
①新增了G1GC
②新增了try with resouce 不用try catch finally来关闭资源,会自动关闭.
③新增switch支持String类型
jdk1.8新特性:
①新增lambda表达式,匿名内部类的简写和stream的各种功能要会用.
②改变了原有HashMap,ConcurrentHashMap结构.
③新增日期类API,如LocalDate
jdk1.9
引入了var 可以像写前端js那样 直接声明一个变量var而不需要定义它的类型,比如 var x = new ArrayList<Integer>();
jdk11
引入了ZGC,垃圾回收暂停时间比G1GC更短。
以上就是java高级面试题的一些分享,对于知识点的原理和分析考察都非常细致,在复习的时候注意理解。处于初级阶段的小伙伴,也可以顺便了解一下以后需要学习的方法。更多Java试题指路:java面试题
下一章:Java中string的面试题整理
java中string的面试题整理:在学习了不少使用string处理字符串的方法后,对于这方面基础内容模块已经初步掌握。对于java面试时,字符串是比较基础和重点的模块,所以在学习和复习的时候,都需要在这方面做重点的学习。我们把试题分为基础 ...