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面试时,字符串是比较基础和重点的模块,所以在学习和复习的时候,都需要在这方面做重点的学习。我们把试题分为基础 ...