218最新java面试题 黑马程序员 初级开发必备面试题

Java 基础

包装类型 :

包装类型是对基本数据类型不足之处的补充。

基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法。

Java1.5 以后可以自动装箱和拆箱。集合

Set:无序、不可重复。

Map:键值对、键唯一、值不唯一。Map 集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对 map 集合遍历时先得到键的set 集合,对 set 集合进行遍历,得到相应的值。 热门面试问题:

1、 什么是 GC?为什么要有 GC?

GC(Garbage Collection)是垃圾收集的意思,负责清除对象并释放内存。Java 提供的 GC 功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的,从而防止内存泄漏。

2、 final, finally 和 finalize 的区别?

final 用于声明属性,方法和类,表示属性不可变,方法不可被重写,类不可被继承。

finally 是异常处理语句结构的一部分,表示总是执行。

finalize 是 object 类的一个方法,在垃圾收集器执行的时候会调用这个对象回收的方法,工垃圾收集时其他资源的回收,比如关闭文件。

3、 什么是单例模式?实现步骤?

单例模式保证了对象唯一。分为懒汉式(在类加载时不初始化)和饿汉式(在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快)。

实现步骤:私有化构造函数、创建一个静态的私有对象、提供公共的访问方法。

4、 ArrayList 和 LinkedList 有何区别?

ArrayList 是基于动态数组的数据结构,LinkedList 是基于链表的数据结构;对于随机访问 get 和 set,ArrayList 较优,因为 LinkedList 要移动指针;

对于新增和删除操作 add 和 remove,LinedList 较优,因为 ArrayList 要移动数据。

5、 HashMap 和 Hashtable 的区别?

HashMap 允许空键值,Hashtable 不允许;

HashMap 继承自 AbstractMap,Hashtable 继承自 Dictionary 类,两者都实现了 Map 接口;

HashMap 的方法不是同步的,Hashtable 的方法是同步的。

6、 Iterater 和 ListIterator 之间有什么区别?

Iterator 用来遍历 Set 和 List 集合,而 ListIterator 只能遍历 List;

Iterator 只可以向前遍历,而 LIstIterator 可以双向遍历;

ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

7、 创建线程的方式?

继承 Thread 类实现 Runnable 接口使用 Executor 框架

8、 什么是死锁?

两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。

9、 wait()与 sleep()的区别?

sleep()来自 Thread 类,wait()来自 Object 类;

调用 sleep()方法,线程不会释放对象锁。而调用 wait 方法线程会释放对象锁; sleep()睡眠后不出让系统资源,wait 让其他线程可以占用 CPU;

sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒。而 wait()需要配合 notify() 或者 notifyAll()使用。

10、什么是 ThreadLocal?ThreadLocal 和 Synchonized 的区别?

线程局部变量。是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式。

synchronized 是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而 ThreadLocal 为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。

JQuery 是一个 JavaScript 库。功能包括 HTML 元素选取和操作、CSS 操作、HTML 事件函数、 JavaScript 特效和动画、HTML DOM 遍历和修改、AJAX 和 Utilities。除此之外,JQuery 还提供了大量插件。

基础语法: $(selector).action()。

选择器:主要分四大选择器,分别是基本选择器、层次选择器、过滤选择器、属性过滤选择器。

事件:例如 click()、dblclick()、mouseenter()、mouseleave()、mousedown()等。Cookie

在 web 程序中是使用 HTTP 协议来传输数据的,因为 http 是无状态协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接,所以无法实现会话跟踪,cookie 技术则弥补了这一缺陷。

cookie 实际上一段的文本信息,客户端请求服务器。如果服务器需要记录该用户的状态,就使用 response 向客户端浏览器颁发一个 cookie。客户端浏览器会把 cookie 保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该 cookie 一同提交给服务器。服务器检查该 cookie,以此来辨认用户的状态。服务器还可以根据需要修改 cookie 的内容。

cookie 生命周期:

cookie 的 maxAge 决定 cookie 的生命周期,单位为秒(second)。cookie 通过 getMaxAge() 方法和 setMaxAge()方法来获得 maxAge 属性,如果 maxAhe 属性为正,则表示 cookie 会在 maxAge 秒之后自动失效。如果 maxAge 属性为负,则说明 cookie 仅在本浏览器窗口和本窗口打开的子窗口下有效,关闭窗口 cookie 则失效。maxAge 的默认值是-1 当 maxAge 的值为 0 时,表示删除 cookie。Session

session 也是一种记录客户状态的机制,不同的是 cookie 保存在客户端浏览器中,而 session 保存在服务器上。客户端浏览器访问服务器是时候把客户端信息以某种形式记录在服务器上,这就是 session 中查找该客户的状态。

session 生命周期:

session 保存在服务器端,为了获得更高的存取速度,服务器一般把 session 放在内存。每个

用户都会有一个独立的 session,如果 session 内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。

session 在用户第一次访问服务器的时候自动创建,需要注意只有访问 JSP,Servlet 等程序时才会创建 session;只要访问 HTML、IMAGE 等静态资源不会创建 session。如果尚未生成 session,可以使用 request.getSession(true)强制生成 session。

session 生成后,只要用户访问,服务器就会更新 session 的最后访问时间,并维护该 session。用户每访问服务器一次,无论是否续写 session 服务器都认为该用户的 session 活跃(active)了一次。

Session 对应的类是 javax.servlet.http.HttpSession,每一个访问者都对应一个 session 对象,并将其状态信息保存在这个 session 对象中,session 对象的创建是在用户第一次访问服务器时产生的。热门面试问题:

1、原生态 Ajax 执行流程?

创建 XMLHttpRequest 对象;注册回调函数;设置连接信息;发送数据,与服务器开始交互;接受服务器返回数据。

2、转发(forward)和重定向(redirect)的区别?

forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect 就是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,因此从浏览器的地址栏中可以看到跳转后的链接地址,很明显 redirect 无法访问到服务器保护起来资源,但是可以从一个网站 redirect 到其他网站。

3、怎么防止表单重复提交?

i. 禁掉提交按钮。表单提交后使用 Javascript 使提交按钮 disable。

ii.Post/Redirect/Get 模式。在提交后执行页面重定向,这就是所谓的 Post-Redirect-Get (PRG) 模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。

iii.在 session 中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在 session 中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从 session 中删除它,然后正常处理数据。

4、web.xml 文件中可以配置哪些内容?

web.xml 用于配置 Web 应用的相关信息,如:监听器(listener)、过滤器(filter)、 Servlet、相关参数、会话超时时间、安全验证方式、错误页面等

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();