《Java程序员面试宝典》——(第二章节)

embedded/2024/10/11 1:00:52/

当前因为经济大环境不好、大厂裁员、就业情况差、企业要求变高、各行各业越来越卷,尤其是程序员,处于这个阶段,感觉特别明显!

对于程序员这个群体来说,java程序员的占比就非常之高,就业市场等于说是千军万马过独木桥,简直可以说是太难了!在这里想说的是,大环境已经这样了,我们已经也无法左右这个市场,根本没有选择的余地,所以,努力的提升自己技术能力最重要。

1、final、finally、finalize 有什么区别?

final:修饰类时表示不能被继承;修饰方法时表示不能被重载;修饰变量时表示不能被修改。

finally:在异常处理时提供finally代码块来执行异常处理。

finalize:是方法名,java允许使用finalize()方法在垃圾收集器将对象从内存中清除之前做必要的清理工作。

2、throw 和 throws 的区别?
在Java中,throw和throws是两个关键字,用于处理异常。
2.1 throw关键字:

- throw关键字用于在代码中手动抛出异常。它通常用于在程序中检测到错误或异常情况时,主动抛出一个异常对象。

- throw关键字后面跟着一个异常对象,可以是Java内置的异常类,也可以是自定义的异常类。

- 一旦throw语句执行,程序将立即停止执行当前方法,并且异常将被传递给调用该方法的地方进行处理。

2.2 throws关键字:

- throws关键字用于在方法声明中指定该方法可能抛出的异常类型。它告诉调用者该方法可能会抛出某些异常,需要进行相应的异常处理。

- throws关键字后面跟着一个异常类型列表,多个异常类型之间用逗号分隔。

- 当一个方法使用throws关键字声明了异常类型时,调用该方法的地方必须进行异常处理,要么使用try-catch语句捕获异常,要么继续使用throws关键字将异常传递给上层调用者。

- throw关键字用于手动抛出异常,throws关键字用于声明方法可能抛出的异常类型。

- throw关键字后面跟着一个异常对象,throws关键字后面跟着一个异常类型列表。

- throw关键字用于方法内部,throws关键字用于方法声明中。

- throw关键字会立即停止当前方法的执行,将异常传递给调用者,而throws关键字只是声明可能抛出异常,不会中断方法的执行。

3、如何避免 sql 注入?
SQL注入是Web开发中最常见的一种安全漏洞,可以用它来从数据库获取敏感信息,进行数据库的一系列非法操作。

校验参数的数据格式是否合法

对进入数据库的特殊字符进行转义处理,或编码转换

预编译SQL,参数化查询方式,避免SQL拼接

4、spring mvc 和 struts 的区别是什么?

拦截机制不同

Struts2是类级别的拦截,每次请求就会创建一个Action

SpringMVC是方法级别的拦截,一个方法对应一个Request上下文。

底层框架不同

Struts2采用Filter实现,SpringMVC采用Servlet实现

性能不同

Struts2需要加载所有的属性值注入,SpringMVC实现了零配置,由于SpringMVC基于方法的拦截。

所以,SpringMVC开发效率和性能高于Struts2

配置方面

SpringMVC 和 Spring 是无缝的,从这个项目的管理和安全上也比Struts2高。

5、讲一下 session 的工作原理?

客户端登录完成之后,服务器会创建相应的session,session创建完成之后,会把session的id发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着sessionid,服务器拿到sessionid之后,在内存找到与之对应的session就可以正常工作了。

6、如果客户端禁止 cookie,session 还能用吗?

如果浏览器禁用了cookie,那么客户端访问服务端时无法携带sessionid,服务端无法识别用户身份,便无法进行会话控制,session就会失效,但是可以通过其他办法实现:

通过URL重写,把sessionid作为参数追加的原URL中,后续的浏览器与服务器交互中携带session

服务器的返回数据中包含sessionid,浏览器发送请求时,携带sessionid参数

7、session 和 cookie 有什么区别?
Session存储在服务器端,适用于存储长期有效数据;Cookie存储在客户端,适用于少量临时数据。
两者安全性不同,Session更安全。选择取决于需求和安全考虑,可同时使用。
Cookie可以设置过期时间,一旦过期就会自动删除。而Session的生命周期通常由服务器控制,当用户关闭浏览器或一定时间没有活动时,Session会自动过期。

8、jsp 的 4 种作用域?
application:在所有应用程序中有效

session:在当前会话中有效;

request:在当前请求中有效;

page:在当前页面有效

9、jsp 有哪些内置对象?作用分别是什么?
request:用户端请求(get/post)

response:网页传回用户端的响应

pageContext:管理网页的属性

session:与请求有关的会话期

application servlet正在执行的内容

out:用来传送回应的输出

config: servlet的架构部件

page :网页本身

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


10、 jsp 和 servlet 有什么区别?

Jsp:Java Server Page,是一种动态页面技术,其根本是一个简化的Servlet设计,用来封装产生动态网页的逻辑处理。

Servlet:服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求与服务器响应的中间层。

相同点:jsp经编译后就变成了Servlet,jsp本质就是servlet,jvm只能识别java的类,不能识别jsp代码,web容器将jsp的代码编译成jvm能够识别的java类。

11、get 和 post 请求有哪些区别?
get是从服务器上获取数据;post是向服务器传送数据

get请求通过URL直接请求数据,数据信息可以在URL中看到;post请求是放在请求头中的,用户看不到;

get传送的数据量小,有限制,不能大于2kb,post传送的数据可以没有限制

get安全性比较低,post相对较安全

12、 forward 和 redirect 的区别?

redirect是客户端发起的请求;forward是服务端发起的请求

redirect浏览器显示被请求的URL;forward浏览器地址不显示被请求的URL

redirect重新开始一个request,原页面的request生命周期结束;

forward另一个连接的时候,request变量是在其生命周期内的。

redirect实质上是两次HTTP请求;forward是一次请求

13、 简述 tcp 和 udp的区别?

TCP是面向连接的,TCP提供可靠的服务,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达。

UDP是无连接的,不可靠,但是速度快,操作简单,要求系统资源较少,可以实现广播发送。

TCP是面向字节流的,UDP是面向报文的;TCP是全双工的可靠信道,UDP是不可靠信道

14、常见的异常类有哪些?
NullPointerException、SQLException、IndexOutOfBoundException、NumberFormatException、
FileNotFoundException、IOException、IllegalArgumentException、NoSuchMethodException

15、try-catch-finally 中哪个部分可以省略?

catch 和 finally可以被省略其中一个,finally代码块是无论是否捕捉到异常,都会执行finally代码块的逻辑。

16、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

捕获到异常后,不会直接返回,会先执行完finally代码块的语句然后继续执行catch代码块中的return。

17、OSI 的七层模型都有哪些?
OSI(Open System Interconnect),即开放式系统互连。 一般都叫OSI参考模型。该体系结构标准定义了网络互连的七层框架,由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,即OSI开放系统互连参考模型。

18、mybatis 中 #{}和 ${}的区别是什么?

#{}是预编译处理,${}是字符串替换

使用#{}可以预防SQL注入

19、mybatis 有几种分页方式?

数组分页

SQL分页

拦截器分页

20、mybatis 逻辑分页和物理分页的区别是什么?

逻辑分页是一次性查询很多数据,然后再在结果中检索分页的数据,这样做的弊端是需要消耗大量的内存,有内存溢出的风险,对数据库压力较大。

物理分页是从数据库查询指定条数的数据,弥补了一次性查出所有数据的缺点。

21、mybatis 是否支持延迟加载?延迟加载的原理是什么?

支持。设置lazyLoadingEnable=true即可

延迟加载的原理是调用的时候触发加载,而不是在初始化的时候就加载信息。

22、mybatis 和 hibernate 的区别有哪些?

Mybatis入门比较简单,使用门槛也更低

SQL直接优化上,Mybatis要比Hibernate方便

Hibernate数据库移植性远大于Mybatis

缓存机制上,hibernate要比mybatis更好一些

23、mybatis 分页插件的实现原理是什么?

分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。

24、说一下mybatis 的一级缓存和二级缓存?
mybatis包含了一个非常强大的查询缓存特性,他可以非常方便的定制和配置缓存。缓存可以极大的提高查询的效率

mybatis系统当中默认定义了两级缓存:一级缓存和二级缓存

一级缓存:默认情况之下,只有一级缓存开启(sqlSession级别的缓存)

二级缓存:需要手动开启配置,需要局域namespace级别的缓存。

一级缓存是sqlsession级别的缓存,也叫本机缓存,因为每一个用户来执行查询的时候都需要sqlsession来执行。为了避免每次都去查询数据库。mybatis把缓存的数据存到sqlsession的本地缓存里面,如果sqlsession里面有的可以直接从本地缓存去读取查询的数据。要是想实现跨sqlsession这个级别的话,需要用到二级缓存。就是当多个用户去查询数据的时候,只要有任何一个sqlsession拿到了数据,就会放入到二级缓存里面,其它的sqlsession可以直接从二级缓存里面查询数据。

需要注意的是,如果SqlSession执行了DML操作(增删改),并且提交到数据库,MyBatis则会清空SqlSession中的一级缓存,这样做的目的是为了保证缓存中存储的是最新的信息,避免出现脏读现象。

25、什么是 ORM 框架?

ORM(Object Relation Mapping)对象关系映射

通过类与数据库表的映射关系,将对象持久化到数据库中

常见的ORM框架有Hibernate、Mybatis

26、MyBatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

动态 SQL 允许你根据不同的条件构建灵活的 SQL 语句。对于一些条件查询尤其重要,比如当某个值不为空时带上这个条件来查询。
原理如下:
动态 SQL 的执行基于 XML 映射文件中定义的 SQL 片段与标签,如 if、choose、when、otherwise、where、foreach等,这些标签被解析,在运行时根据传入的参数值评估,最
终形成完整的 SQL 语句发送到数据库执行。


http://www.ppmy.cn/embedded/125636.html

相关文章

51单片机的无线通信智能车库门【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块红外传感器光照传感器时钟模块步进电机蓝牙按键、LED、蜂鸣器等模块构成。适用于智能车库自动门、无线控制车库门等相似项目。 可实现功能: 1、LCD1602实时显示北京时间和自动/手动模式,以及验证是否成…

【线性代数】【第一章】行列式习题

文章目录 一. 重要定理1. 代数余子式2. 主要公式3. 方阵的行列式4. 克拉默法则 三. 典型例题1. 行列式计算1.1. 数字型行列式题型一:代数余子式降阶、拉普拉斯题型二:逐行消元,化为上三角式 1.2.抽象行列式(考察行列式的性质&…

Leetcode203.移除链表元素-Python

题目链接:203. 移除链表元素 - 力扣(LeetCode) 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入&a…

宠物空气净化器哪个牌子吸毛好?希喂、IAM、352真实测评

前段时间忙活了个大工程——热门宠物空气净化器大横评,通过多方位的测试,帮助不少朋友解决了宠物空气净化器的选购难题。 但我们还不局限于此,在从事家电行业这些年间,我们还花费大价钱购置一堆产品实测体验过各类大小家电产品&a…

rocky9 samba共享

1. 安装samba服务,设置开机自启。 2. 创建四个用户user1,user2,sale1,manager,user1,user2属于finance组,sale1属于sales组,manager属于manager组。 3. 建立共享目录/opt/finance_…

springboot中@ConfigurationProperties注解的用法

简介 ConfigurationProperties注解在Spring Boot框架中提供了一种将外部配置(如application.properties或application.yml文件中的属性)绑定到Java对象的便捷方式。以下是ConfigurationProperties注解的详细用法 基本用法 定义配置类 创建一个普通的…

机器学习:关联规则:Apriori算法、FP - Growth算法的原理、应用场景及优缺点介绍

一、关联规则算法概述 关联规则挖掘是数据挖掘中的一个重要任务,用于发现数据集中不同项之间的关联关系。 二、Apriori算法 原理 频繁项集生成:Apriori算法基于一个先验原理,即如果一个项集是频繁的,那么它的所有子集也是频繁的…

springboot 模版集成方案(第二章)

springboot 模版集成方案 jsp 模版集成 ​ 在SpringBoot框架中默认模板推荐使用Thymeleaf模板,但是也不能排除有些公司还是使用jsp 模版解析&#xff1b; 1. 引入jsp 集成的 jar 包 <!--c标签库--> <dependency><groupId>jstl</groupId><artifact…