IT虾米网

java中高级面试问答

flyfish 2022年05月10日 编程语言 177 0

1、jvm对频繁调用的方法做了哪些优化?

        Java虚拟机最开始是通过解释器进行解释执行的,当虚拟机发现某个方法或者代码块的运行特别频繁时,就会把这些代码认定为”热点代码”,为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT)

2、常见的攻击手段有哪些?如何防范?

        XSS、CSRF、SQL注入DOS/DDOS等具体细节见历史文章。

3、restful api有哪些设计原则?

        需要考虑的设计原则有:域名、版本、路径、动词、状态码、返回结果等等之后具体会形成文章。

 4、Hessian是做什么用的?它的传输单位是什么?

         Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

 5、http中的post、get有什么区别?base64过后的字符串可以通过get传输吗?

         区别:

        ① 动作不同:get是获取资源,post是提交资源;

        ② 安全方面: get参数在URL中不安全,post是放在http body中的相对安全;

        ③ 参数长度:get传输字节数受限于URL长度,post无限制;

        ④ 获取方式:后台获取数据的方式get只能是QueryString,而post可从InputStream中获取 base64编码后有+=特殊符号的会转码不能经get传输,如果是改进的base64会替换掉特殊符号可以用get传输。

6、常用的算法都有哪些分类,分别有哪些算法及应用场景?

        一般有散列算法、对称算法、非对称算法,具体细节后期补写。

7、死锁是什么?写一个死锁的例子?如何避免死锁?

         死锁就是多线程相互等待对方释放锁造成的假死状态。

 8、学用的序列化方案都有哪些,说说它们的优缺点?

        分类:序列化有对象序列化,JSON序列化,XML序列化等;

        方案:java自带序列化、kryo、protostuff、GSON、jackson、fastjson等之后形成文章。

9、什么是过滤器、拦截器、监听器,它们的顺序是怎样的?

       ①  监听器,是容器启动和销毁时触发的动作;

       ② 过滤器,是进入servlet请求之前触发的工作,

       ③ 拦截器,是像springmvc框架实现的内部的请求拦截器。

        顺序:监听器>过滤器>拦截器

10、servlet3.0有哪些新规范?

        增加注解不需要web.xml配置、异步处理、可插性支持,性能增强等。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java多线程题库