温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java常见面试题:java面试笔记

发布时间:2020-08-13 20:26:13 来源:ITPUB博客 阅读:226 作者:千锋Python唐小强 栏目:编程语言

1、基本数据类型有哪些?

基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。

2、get和post的区别

get是从服务器上获取数据,post是向服务器传递数据;

get传送的数据量小,不能大于2KB,post传送的数据量较大;

get安全性低,传递的参数都显示在地址栏,post高,但是执行效率上get好一些;

在进行文件上传的时候,只能使用post而不能使用get

3、string stringbuffer stringbuilder 区别及选用

String字符串常量,Stringbuffer与Stringbuilder是字符串变量

String长度不可变,Stringbuffer与Stringbuilder长度可变。因为String类中使用final关键字字符数组保存字符串,private final char value[],所以String不可变

String使用字符串拼接的时候是两个不同的空间,Stringbuffer与Stringbuilder则是直接在字符串后面追加,所以大数据量上不用string

StringBuffer线程安全,StringBuilder线程不安全,是因为StringBuffer对方法加了同步锁

执行效率上StringBuilder>StringBuffer>String

总结:对于操作少量的数据用String,大量的数据,单线程用StringBuiler,多线程用StringBuffer

4、HashMap与Hashtable区别

HashMap非线程安全,HashTable线程安全,因为HashTable内部的方法都经过synchronized修饰

HashMap允许null的键/值,HashTable不允许

HashMap性能优于Hashtable

初始容量Hashtable默认11,每次扩充,容量变为原来的2n+1。HashMap默认16,每次扩充,容量变为原来的2倍

底层数据结构不同,jdk1.8之后,当链表长度大于阈值(默认为8)时,将链表转换为红黑树,来减少搜索时间,Hashtable没有这样的机制,Hashtable基本被淘汰了,少用。

5、Spring MVC和Spring boot有啥区别

1、springMVC是Spring的一个模式,是一个Web框架,提供了一个轻度耦合的方式来开发Web应用;

2、SpringBoot是习惯优于配置,降低了项目搭建的难度(约定大于配置,可以简化spring的配置流程);

3、springMVC需要适用到TomCat服务器,而springboot内置服务器容器,通过@SpringBootApplication中注解类中main函数启动即可;

6、session和cookie的区别

Java常见面试题:java面试笔记

区别:

1、cookie数据存放在客户端,session数据放在服务器上。

 2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

 3、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑性能应当使用cookie。

 4、不同浏览器对cookie的数据大小限制不同,个数限制也不相同。

 5、可以考虑将登陆信息等重要信息存放为session,不重要的信息可以放在cookie中。

联系:

1、都是用来记录用户的信息,以便让服务器分辨不同的用户。 2、可以搭配使用,但都有自己的使用局限,要考虑到安全和性能的问题。

7、JDK、JRE、JVM的联系与区别

Java常见面试题:java面试笔记

三者联系:

JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

三者区别:

1.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。

2.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

8、&和&&区别

9、ArrayList和Vector的区别?

10、List 和 Map 区别?Set呢?

11、ArrayList,Vector, LinkedList的存储性能和特性?

12、char类型的变量能不能存储一个中文?为什么?

13、在HashMap中是如何比较“key”的值的

在HashMap比较两个key值时,首先使用equals进行比较两个key的值,如果不同则认为是两个不同的key;如果相同,再比较两个key的hashcode,如果不同,则认为是两个不同的key;如果相同则认为是两个相同的key,此时的value2会覆盖value1的值

14、如果main方法被声明为private会怎样?

15、char类型的变量能不能存储一个中文?为什么

答案是可以的,但是两个中文不行。因为char占两个字节,一个中文也占两个字节,所以是可以存储的。

16、九大内置对象是哪些?

request:用户端请求,此请求会包含来自GET/POST请求的参数(表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header, 和session数据的有用的方法。)

response:网页传回用户端的回应(表示HttpServletResponse对象,并提供了几个用于设置送回

浏览器的响应的方法(如cookies,头信息等))

page:JSP网页本身(表示从该页面产生的一个servlet实例)

pageContext:网页的属性是在这里管理(表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。)

session:与请求有关的会话期(表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息)

application:servlet正在执行的内容(表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息)

out:用来传送回应的输出(是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器推送输出结果。)

config:servlet的构架部件(表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。)

exception:针对错误网页,未捕捉的例外

17、Servlet生命周期和执行流程?

Servlet的生命周期可以分为四个阶段:装载类及创建实例阶段,初始化阶段,服务阶段,实例销毁阶段

1、初始化阶段调用init()方法。

2、响应客户请求阶段。调用service()方法,由service()方法根据提交的方式选择执行doGet()或者doPost()方法。

3、终止阶段调用destroy()方法。

执行流程:浏览器向服务器请求时,服务器不会直接执行我们的类,而是到web.xml里寻找路径名

第一步,浏览器输入访问路径后,携带了请求行,头,体

第二步,根据访问路径找到已注册的servlet名称,既图中的demo

第三步,根据映射找到对应的servlet名

第四步,根据根据servlet名找到我们全限定类名,既我们自己写的类

18、JVM简述java垃圾回收机制?

在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

19、JVM简述java类加载机制? 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI