前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10 个经典的 Java 集合面试题,看你能否答得上来?(会员专享)

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

作者头像
CSDN技术头条
发布2020-12-17 10:52:04
7870
发布2020-12-17 10:52:04
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

本文为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、联合查询

基本语法:

代码语言:javascript
复制
Select 语句 1
    
    Union [union 选项]
    
    Select 语句 2
    
    ……

将多次查询(多条 select 语句), 在记录上进行拼接(字段不会增加),每一条 select 语句获取的字段数必须严格一致(但是字段类型无关)。

其中 union 选项有 2 个。ALL:保留所有;Distinct(默认):去重。

应用:查询同一张表,但是有不同的需求;查询多张表,多张表的结构完全一致,保存的数据也是一样的。

在联合查询中,order by 不能直接使用。需要对查询语句使用括号才行。另外需要配合 limit 使用。

5、索引

如果说数据库表中的数据是一本书,那么索引就是书的目录。索引能够让我们快速的定位想要查询的数据。

索引的结构:BTree 索引和 Hash 索引。

MyISAM 和 InnoDB 存储引擎:只支持 BTREE 索引, 也就是说默认使用 BTREE,不能够更换。

MEMORY/HEAP 存储引擎:支持 HASH 和 BTREE 索引。

索引的分类:单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引。

6、数据库引擎

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择 InnoDB 有很大的优势。

如果需要频繁的更新、删除操作的数据库,也可以选择 InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择 MyISAM 能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择 MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

7、存储过程

SQL 语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

存储过程是可编程的函数,在数据库中创建并保存,可以由 SQL 语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

存储过程的优点:

  1. 增强 SQL 语言的功能和灵活性;
  2. 标准组件式编程;
  3. 较快的执行速度;
  4. 减少网络流量;
  5. 作为一种安全机制来充分利用。

8、热门面试问题:

1、JDBC 编程的步骤?

2、事务的 ACID 是什么?事务并发会产生哪些问题?

3、数据库性能优化有哪些方式?

9、数据库笔试题

(1)用一条 SQL 语句查询出每门课都大于 80 分的学生姓名

(2)所有球队之间的比赛组合

一张叫 team 的表,里面只有一个字段 name,一共有 4 条纪录,分别是 a、b、c、d,对应四个球队,现在四个球队进行比赛,用一条 sql 语句显示所有可能的比赛组合。

(3)显示文章标题,发帖人、最后回复时间

表:id,title,postuser,postdate,parentid

准备 sql 语句:

(4)航空网的几个航班查询题

① 查询起飞城市是北京的所有航班,按到达城市的名字排序

② 查询北京到上海的所有航班记录(起飞城市,到达城市,起飞时间,航班号)

③ 查询具体某一天(2005-5-8)的北京到上海的的航班次数

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档