专栏名称: 人工智能头条
专注人工智能技术前沿、实战技巧及大牛心得。
目录
相关文章推荐
黄建同学  ·  这个Vegs ... ·  昨天  
黄建同学  ·  最近把cursor一个月500条的fast ... ·  昨天  
爱可可-爱生活  ·  【[18星]MPO:用Meta Plan ... ·  3 天前  
51好读  ›  专栏  ›  人工智能头条

10 个经典的 Java 集合面试题,看你能否答得上来?(会员专享)

人工智能头条  · 公众号  · AI  · 2020-12-17 15:54

正文


本文为CSDN博主「我要取一个响亮的昵称」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/chen_2890/article/details/83928763 出品 | CSDN(ID:CSDNnews)



01


Java 基础


1 基本数据类型


2、 包装类型


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

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

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


3、 集合

  • List:有序、可重复。可以通过索引快速查找,但进行增删操作时后续的数据需要移动,所以增删速度慢。

  • Set:无序、不可重复。

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


4、多线程

  • 新建状态: 一个新产生的线程从新状态开始了它的生命周期。它保持这个状态直到程序 start 这个线程。

  • 运行状态:当一个新状态的线程被 start 以后,线程就变成可运行状态,一个线程在此状态下被认为是开始执行其任务

  • 就绪状态:当一个线程等待另外一个线程执行一个任务的时候,该线程就进入就绪状态。当另一个线程给就绪状态的线程发送信号时,该线程才重新切换到运行状态。

  • 休眠状态: 由于一个线程的时间片用完了,该线程从运行状态进入休眠状态。当时间间隔到期或者等待的时间发生了,该状态的线程切换到运行状态。

  • 终止状态: 一个运行状态的线程完成任务或者其他终止条件发生,该线程就切换到终止状态。


5、 热门面试问题:


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

  2. final, finally 和 finalize 的区别?

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

  4. ArrayList 和 LinkedList 有何区别?

  5. HashMap 和 Hashtable 的区别?

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

  7. 创建线程的方式?

  8. 什么是死锁?

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

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



这些面试题,你都会做吗?


扫码进入 CSDN 会员 公众号

后台回复关键词“ 面试

即可领取 所有的 面试 答案


02

Java Web



1、Ajax


AJAX = Asynchronous JavaScript and XML(异步 JavaScript 和 XML)。

Ajax 的原理简单来说通过 XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后用 Javascript 来操作 DOM 而更新页面。这其中最关键的一步就是从服务器获得请求数据。


XmlHttpRequest 是 ajax 的核心机制,它是在 IE5 中首先引入的,是一种支持异步请求的技术。


简单的说, 也就是 Javascript 可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。


2、 JQuery


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

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

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

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


3、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。


4、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 对象的创建是在用户第一次访问服务器时产生的。


5、 热门面试问题:


  1. 原生态 Ajax 执行流程?

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

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

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



这些面试题,你都会做吗?


扫码进入 CSDN 会员 公众号

后台回复关键词“ 面试

即可领取 所有的面试答案


03

数据库(MySQL)



1、连接查询


分类:内连接、外连接、自然连接(略)、交叉连接(略)。


2、内连接


基本语法:左表 [inner] join 右表 on 左表.字段 = 右表.字段;

从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。


3、外连接


基本语法: 左表 left/right join 右表 on 左表.字段 = 右表.字段;

  • left join: 左外连接(左连接), 以左表为主表

  • right join: 右外连接(右连接), 以右表为主表

以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接:不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其他表的字段都置空 NULL。

左外连接
右外连接


4、联合查询


基本语法:

Select






请到「今天看啥」查看全文