Java常见的面试题(一)

一,java数据类型

1,基本数据类型及长度

整型:byte(1),short(2),int(4),long(8)

字符型:char(2)

浮点型:float(4),double(8)

2,引用数据类型

类:String,System,Object,Math.......

接口:Runnable,Serializable,Comparable........

数组:int[],String[],char[].......

二·,springMVC工作流程

(1)用户发送请求至前端控制器DispatcherServlet;

(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;

(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

三,abstract和interface的区别:

(1)abstract类,是单继承,用的是关键字 extends;interface接口,可以多实现,用的关键字是implements

(2)interface内的成员都是public修饰的;而abstract内不一定

(3)interface的成员对象都是static、final修饰的;而abstarct内不一定;

(4)interface内方法不能有默认实现,只有声明;而abstract内只有抽象方法不能有默认实现,其他可以有默认实现

(5)interface被implements时,所有的抽象方法必须被实现;而abstarct类如果有抽象方法,则必须实现该抽象方法,其他的默认实现则继承过来

四,线程、多线程、线程池

线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。

多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。

线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创线       程对象所带来的性能开销,节省了系统的资源。

五,产生死锁的必要条件

产生死锁有四个条件:互斥、请求和保持、不可抢占、循环等待。

只要任意一个条件不成立,死锁就不会发生。

  1. 互斥条件:进程对所分配到的资源进行排它性使用,即在一段时间内,某资源只能被一个进程占用。如果此时还有其它进程请求该资源,则请求进程只能等待,直至占有该资源的进程用毕释放。
  2. 请求保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程被阻塞,但又对自己以获得的资源保持不变。
  3. 不可抢占条件:进程已获得的资源在未使用完之前不能被抢占,只能在进程使用完时由自己释放。
  4. 循环等待条件:在发生死锁时,必定存在一个由进程构成的资源循环链(进程集合{P0,P1,P2,...,Pn}中的P0正在等待一个P1占用的资源,P1正在等待P2占用的资源,......,Pn正在等待P0占用的资源)。

六,HashMap和Hashtable的区别

1、线程安全

Hashtable 是线程安全的,HashMap 不是线程安全的。

2、性能优劣

既然 Hashtable 是线程安全的,每个方法都要阻塞其他线程,所以 Hashtable 性能较差,HashMap 性能较好,使用更广。

如果要线程安全又要保证性能,建议使用 JUC 包下的 ConcurrentHashMap。

3、NULL

Hashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为 null。

4、实现方式

Hashtable 的继承源码:

public class Hashtable<K,V>    extends Dictionary<K,V>    implements Map<K,V>, Cloneable, java.io.Serializable

HashMap 的继承源码:

public class HashMap<K,V> extends AbstractMap<K,V>    implements Map<K,V>, Cloneable, Serializable

可以看出两者继承的类不一样,Hashtable 继承了 Dictionary类,而 HashMap 继承的是 AbstractMap 类。

Dictionary 是 JDK 1.0 添加的,貌似没人用过这个,栈长我也没用过。。

5、容量扩容

HashMap 的初始容量为:16,Hashtable 初始容量为:11,两者的负载因子默认都是:0.75。

当现有容量大于总容量 * 负载因子时,HashMap 扩容规则为当前容量翻倍,Hashtable 扩容规则为当前容量翻倍 + 1。

6、迭代器

HashMap 中的 Iterator 迭代器是 fail-fast 的,而 Hashtable 的 Enumerator 不是 fail-fast 的。

所以,当其他线程改变了HashMap 的结构,如:增加、删除元素,将会抛出 ConcurrentModificationException 异常,而 Hashtable 则不会。

七,springMVC中Jackson的使用

在springmvc项目中使用ajax的时候,Controller层方法使用@ResponseBody注解,他会返回前端json对象给前端,我们方法只需要返回对象集合,对象,字符串等都可以返回json对象,这个是spring帮我们使用jackson做了

我们只需要在spring中配置jackson即可。

原文地址:https://www.cnblogs.com/zzz222zzz/p/11886355.html

时间: 2024-11-11 10:50:02

Java常见的面试题(一)的相关文章

java常见的面试题

1. super()与this()的差别? super和this的差别: 1)super(參数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(參数):调用本类中还有一种形成的构造函数(应该为构造函数中的第一条语句) 3)super: 它引用当前对象的直接父类中的成员(用来訪问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有同样成员定义时如:super.变量名    super.成员函数据名(实參) 4)this:它代表当前对象名(在程序中易产生二义性之处,应

208道Java常见的面试题

一.Java 基础 1.JDK 和 JRE 有什么区别? JRE=JVM+各种基础类库+java类库(String\System) JDK>JRE>JVM JRE:是java运行时环境  JDK:是java开发工具包 2. == 和 equals 的区别是什么? 1.对象类型不同:a:equals():是超类Object中的方法.b:==:是操作符. 2.比较的对象不同:a:equals():用来检测两个对象是否相等,即两个对象的内容是否相等.b:==:用于比较引用和比较基本数据类型时具有不同

java程序员面试题大全含答案(2018--2019)

java程序员面试题大全含答案(2018--2019) 1.10道经典java面试题_实习生必问! 2.15个Java线程并发面试题和答案 3.15个高级Java多线程面试题及回答 4.2018年java分布式相关最新面试题 5.2018最新java技术面试题与答案 6.4个Spring常见面试题及答案解析 7.css面试题及答案 8.HR常问面试题总结(上) 9.HR常问面试题总结(下) 10.html面试题及答案 11.java中String类的面试题大全含答案 12.java二叉树算法面试

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

Java程序员面试题集(1-50)

下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja

Java程序员面试题集(71-85)

Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言).面向对象的设计原则(六原则一法则).GoF设计模式.企业级设计模式.JDBC(Java数据库连接).XML(可扩展标记语言)等知识. 71.UML是什么?UML中有哪些图? 答:UML是统一建模语言(Unified Modeling Language)的缩写,它发表于1997年,综合了当时已经存在的面向对象的建模语言.方法和过程,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化

Android常见笔试&amp;面试题

一.JAVA部分: (挂起) 二.Android部分: 1.Android系统的架构 2.Android常用的五大布局 3.Android四大组件是什么 4.Activity的生命周期 5.Activity的四种启动模式 6.Service的启动方式有几种,有什么区别 7.BroadCastReceiver的使用机制 8.谈一谈Handler的工作机制 9.Service运行在哪个线程中 10.两个子线程中如何通过Handler来进行通讯 11.对于不同分辨率屏幕适配你是怎么做的 12.怎样彻底

中软国际Java程序员笔试题

1.谈谈final, finally, finalize的区别. final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为final,可以保证它们在使用中不被改变.被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改.被声明为final的方法也同样只能使用,不能重载. finally:在异常处理时提供 finally 块来执行任何

[转帖]2019年常见ElasticSearch 面试题解析(上)

2019年常见ElasticSearch 面试题解析(上) https://juejin.im/post/5e0348d8e51d45582512a59f 前言 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎.ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安