有点难度的 10 道 Java 面试题
↑ ↑ ↑点击上方 “Java面经” 关注我们↑ ↑ ↑
1、jvm对频繁调用的方法做了哪些优化?
java虚拟机最开始是通过解释器进行解释执行的,当虚拟机发现某个方法或者代码块的运行特别频繁时,就会把这些代码认定为”热点代码”,为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT)。
2、常见的攻击手段有哪些?如何防范?
XSS、CSRF、SQL注入、DOS/DDOS等具体细节见历史文章。
3、restful api有哪些设计原则?
需要考虑的设计原则有:域名、版本、路径、动词、状态码、返回结果等等之后具体会形成文章。
4、hessian是做什么用的?它的传输单位是什么?
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
5、http中的post、get有什么区别?base64过后的字符串可以通过get传输吗?
区别:
1、两种动作不一样,get是获取资源,post是提交资源
2、get参数在URL中不安全,post是放在http body中的相对安全
3、get传输字节数受限于URL长度,post无限制
4、后台获取数据的方式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配置、异步处理、可插性支持,性能增强等。
Java面经 • 海量面试题