一些面试题

1.hashmap、concurrenthashmap底层实现和区别

hashmap是基于数组+链表结构的,数组下标有hash生成,链表主要是为了防止hash冲突
区别:hashmap是线程不安全的,ConcurrentHashMap是线程安全的,把数据分成了不同的段,使用的分段锁技术,通过hash计算那些数据放在那个段中,查找也是如此

2.spring框架的原理

spring框架主要是用来创建、注册、配置、管理、维护bean的容器,主要是利用Java反射技术动态维护、调用对象,主要包括控制反转(IOC)以及面向切面(AOP),三种注入方式分别是Field注入
(使用@Autowired或@Resource注入)、构造器注入和Setter方法注入

3.如何写一个orm框架

对象-关系映射(Object-Relational Mapping,简称ORM),处理对象与数据库交互的,常见的有hibernate、jpa、ibatis等

4.hibernate一级缓存和二级缓存,hibernate其他缓存

hibernate缓存分为三种:一级缓存,二级缓存和查询缓存,
session内的缓存即一级缓存,不能被清除,缓存起来的对象叫做持久化对象,如果在同一个session中去获取这个对象,先查缓存,没有则去查数据库。
evict(Object o)和clear()管理缓存。
二级缓存的生命周期和SessionFactory的生命周期一致,可以被其他缓存共享。

5.hibernate事务传播行为种类

事物的四个特性:原子性(所有操作全部发生或全部不发生)、一致性(事务执行前和执行后必须处于一致性状态)、隔离性(多个事务相互隔离)、持久性(事务一旦提交,数据就会发生永久性的改变)

6.springmvc原理

用户发起请求到前端控制器,然后根据配置找到处理器映射器,然后根据适配器找到对应的controller,controller处理完毕后返回对应的model&view到前端控制器,前端控制器拿着model&view
到视图解释器进行渲染生成最终的页面返回给用户

7.restful的好处  

基于rest API开发的开发规范,尤其是当前后端分离时能够节约时间

8.restful有几种请求,表单如何提交put请求

form提交需要在URL中加入提交方式:X-Method-Override=PUT,ajax提交需要在header中加入提交方式:X-Method-Override=PUT

9.web中安全性问题的考虑,如何防止

主要包括SQL注入、XSS、越权访问、文件上传漏洞

10.web系统整体架构

一、ssh:Struts2+spring+hibernate,Struts2用于分发控制,spring用于管理bean,hibernate用于orm,负责于数据库交互,业务缓存使用memcache,tomcat集群session共享使用redis
二、springboot+vue:springboot用作后台业务,spring gateway用作网关,spring eurake 用作服务注册发现,业务缓存redis

11.hibernate如何实现声明式事务

添加事务管理类的bean、配置事务的通知、添加事务的切入点

12.java并发包

https://blog.csdn.net/qq_38357267/article/details/80972942

 13.volatile

11

15.spring底层数据结构

16.如何进行反射,如何提高反射的性能

17.如何实现java的代理,为什么需要实现接口

18.TCP协议三次握手

19.springmvc用过哪些注解

20.springAOP可以使用哪些代理,有什么区别

21.为什么要分三层

1、String和StringBuffer的区别
2、gc的概念,如果A和B对象循环引用,是否可以被GC?
3、Java中的内存溢出是如何造成的
4、String s = “123”;这个语句有几个对象产生
5、Error、Exception和RuntimeException的区别,作用又是什么?
6、列举3个以上的RuntimeException
7、reader和inputstream区别
8、hashCode的作用
9、Object类中有哪些方法,列举3个以上(可以引导)
10、char型变量中能不能存贮一个中文汉字?为什么?
11、列举几个Java Collection类库中的常用类
12、List、Set、Map是否都继承自Collection接口?
13、HashMap和Hashtable的区别
14、HashMap中是否任何对象都可以做为key,用户自定义对象做为key有没有什么要求?
15、interface 和 abstrat class的区别 是否可以继承多个接口,是否可以继承多个抽象类
16、 启动一个线程是用run()还是start()? 多线程有几种实现 同步和并发是如何解决的 什么叫守护线程,用什么方法实现守护线程(Thread.setDeamon()的含义) 如何停止一个线程? 解释是一下什么是线程安全?举例说明一个线程不安全的例子。解释Synchronized关键字的作用。 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
17、了解过哪些JDK8的新特性,举例描述下相应的特性?
18、对sql进行优化的原则有哪些?
19、servlet生命周期是生命与cgi的区别?
20、StringBuffer有什么优势?为什么快?

  

  

  

  

  

  

  

  

猜你喜欢

转载自www.cnblogs.com/ViokingJava/p/10512414.html