转载

java中级面试题

1.spring里面的注解有哪些?

@Component 是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上@Component不推荐使用。

@controller 对应表现层的Bean

@ Repository 对应数据访问层Bean

@Autowired顾名思义,就是自动装配,是spring注解

@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配,是j2ee注解

2.线程创建的方式有哪几种?

两种 一种是extend thread类,还有一种是实现runable接口。一般我们都是用实现。因为继承只能继承一个,而实现可以实现多个接口,还能再继承。

3.线程的安全性问题,怎么解决?

两个或者两个以上的线程去争夺或者访问同一个资源,就会引发一些问题,由于每个线程执行的过程是不可控的,所以很可能导致最终的结果与实际上的愿望相违背或者直接导致程序出错。

基本上所有的并发模式在解决线程安全问题上,都采用“序列化访问临界资源”的方案,即在同一时刻,只能有一个线程访问临界资源,也称同步互斥访问。通常来说,是在访问临界资源的代码前面加上一个锁,当访问完临界资源后释放锁,让其他线程继续访问。在Java中,提供了两种方式来实现同步互斥访问:synchronized和Lock。

4.http底层 http的一些方法

http1.0定义了get post head

http1.1定义了options, put, delete, trace 和 connect

5.get和post的区别

Get是安全的和幂等的 以get?参数&参数这种形式将参数显示在地址栏上,是不安全的

get允许传输的数据会受到限制,因此get的传输效率要比较高

Post 通常用于表单提交,不带参数,比较安全,允许传输大量数据

但这两者的保密性都是不强的

6.springmvc的运行原理

浏览器发送http请求到DispatcherServlet, DispatcherServlet寻找一个或者多个handmapping处理器,然后调用处理器找到处理请求的controller,controller通过调用modelandview模型处理业务,将结果返回到DispatcherServlet,DispatcherServlet通过视图解析印射(ViewResolver)将模型数据传给view显示,http将view显示在浏览器上

7.Spring中的ioc和aop用到了哪种设计模式

ioc 控制反转,ioc对象的生成交给spring容器完成DI(Dependency Injection),依赖注入等价于Aop面向切面

ioc用到的是工厂设计模式,通过sessionfactory去注入实例

Aop用到的是代理模式,主要是动态代理跟静态代理两种模式

8.list set map

List特点:继承了Collection,元素有放入顺序,元素可重复

Set : 继承了Collection,存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序

Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。 Map没有继承于Collection接口 从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。 get(Object key):获得与关键字key相关的值 。Map集合中的键对象不允许重复,也就说,任意两个键对象通过equals()方法比较的结果都是false.

9.Array list linked list

ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问ArrayList()中插入与删除元素的速度慢,线程不安全。

LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

10.hashmap和hashtable

HashMap非线程安全,高效,支持key和valuenull;HashTable线程安全,低效,不支持null

11.stringbuffer跟stringbuild

StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象,StringBufferd支持并发操作,线性安全的,适 合多线程中使用.StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用

原文  https://segmentfault.com/a/1190000021495076
正文到此结束
Loading...