java面试题(1)

本文列举了19个Java相关的面试问题,涵盖文件上传、HTTP方法、Cookie与Session的区别、Servlet生命周期、Spring注解、XML配置等内容。对于每个问题,都提供了详细解答,帮助读者深入理解Java Web开发的关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.文件上传条件

文件上传三要素:请求方式必须是post,设置表单项的type="file",设置复杂表单属性【enctype="multipart/form-data"】
也可以使用原生的文件上传 - 但是代码量非常多
如果用SpringMvc做文件上传,需要配置文件上传解析器【将部分代码配置化了】
 

2.重定向和转发区别?

突破口:几次请求
重定向:多次请求 - 地址栏变化 - 不能共享request中的数据  - 不能访问WEB-INF的资源 - 可以访问外部资源
转发:一次请求 - 地址栏没有变化 - 能共享request中的数据 - 可以访问WEB-INF的资源 - 不可以访问外部资源
SpringMvc默认用的是转发:转发是内部转发,效率要高一些
SpringMvc中如果非要重定向:return "redirect:/xxx.jsp"; - 不会经过是视图解析

3.get和post区别?

突破口:请求参数在哪儿
get请求 - 请求参数在地址栏 - 不安全 - 大小有限制,大约2kb左右 
post - 数据保存在实体内容中 - 相对安全 - 大小没有限制

4.Cookie与Session区别?

突破口:数据保存在那儿
Cookie:数据保存在浏览器,数据不太安全,而且数据大小有限制,并且保存的数据只能是字符串
Session:将数据保存在服务器端,数据相对安全,而且数据类型和大小没有限制。
但是如果服务器端保存的数据太多,会影响服务器的性能

5.什么是mvc?mvc的好处?

m-model 保存数据和处理数据的
v - 显示数据的
C-三大职责:接受请求,处理请求,响应请求
Mvc的好处是责任分离,专业的注解做专业的事,降低耦合度

6.jquery与Bootstrap区别?

都是前端框架,jquery是js框架,而bootstrap是一个前端ui框架,帮助开发者快速编写好看的页面,不光如此,bootstarp开发的页面是响应式的页面,一般中小型的页面,简单的页面可以用bootstarp来开发,然后只需要开发一套页面,在不同的设备【电脑,平板,手机】上都可以浏览,不用单独为手机再开发一套页面。但是比较复杂的页面,大型的页面不能用bootstrap来开发

7.同步和异步区别?

同步:你做了我才能做,下一步的操作必须要等到上一步操作的结果 
异步:同时操作,互不干扰
异步操作可以提高效率

8.什么是Socket?TCP与UDP区别?

套接字:连接之后要实现数据的传输就要使用JAVA给我提供的api:Socket(最常见的一种)
TCP和UDP是协议,而Socket是实现,协议中可以包含很多实现,最常见的就是Socket技术
TCP是传输控制协议:可靠【3次握手,4次挥手】传输协议,底层使用io流进行数据传输。每一次传输数据都要询问对象,效率低,但是安全。TCP还有超时重传,数据确认的机制。
UDP是用户数据报协议:不可靠传输协议,但是效率高,不太安全,容易丢包

9.Jsp和Servlet有哪些相同点和不同点?

JSP是Java Server Page,java服务器的页面,所以Jsp是一个后端技术。
当访问一个Jsp页面的时候,Jsp页面会先转换成一个Servlet,然后编译成Servlet,同样要经历Servlet的生命周期,实际上页面中的内容是使用输出流写出去的
所以,Jsp实际就是一个Servlet,不过Jsp注重数据展示,Servlet注重逻辑处理

10.简述Servlet的生命周期?

实例化(为对象分配空间)
初始化(为对象的属性赋值)
请求处理(服务阶段)
销毁(服务结束/容器关闭)
Servlet是单例的,多次请求只会产生一个Servlet对象
Servlet是非线程安全的,所以最好不要在Servlet中定义成员变量

11.Spring常用注解

实例化对象的:@Controller,@Service,@Repository,@Compnont  -- 条件需要扫描包路径
    注入注解:@Autowired【SpringMvc的注解】 or @Resource【Javaee的注解,对Spring有支持】
    匹配请求的注解:@RequestMapping - 条件是要开启Spring对Mvc的支持
    响应ajax请求的注解:@ResponseBody - 将响应的数据转成json格式,这个注解标识的方法返回值不会经过过视图解析器

12.xml中大致的配置

web.xml - 前端控制器+过滤器处理post请求中文乱码【get请求不用处理,tomcat8默认使用UTF-8进行编码,tomcat7及其之前的版本需要配置】
        +监听器【加载spring配置文件】
    spring配置文件 - 管理属性文件jdbc.properties+管理连接池+管理SessionFactory+管理Mapper接口
    Springmvc配置文件 - 扫描包路径+开启Spring对Mvc的支持+ 视图解析器+静态资源放行

13.拦截器的原理

SpringMvc拦截器
mVC思想
    model模型,view视图,controller视图
    任何语言设计一个软件都需要这三部分,用户要接触软件就是通过视图【页面或客户端】,
    视图中的功能需要实现,必须要使用功能model实现。但是model和view不能直接交互,必须通过controller。
    这三个部分缺一不可

14.三层架构

controller表现层或控制层【以前servlet+jsp,现在springMvc】
    service业务层
    持久化层【以前dao用jdbc ,现在用mybatis,mapper】

15.处理中文乱码

项目一种使用过滤器处理post请求的中文参数乱码问题,
    get请求不用处理,因为用的是tomcat8,默认使用UTF-8

16.StringBuilde和StringBuffer区别

17.分页如何实现的

使用gm提供的方法setQuery()将gm自带的分页参数和高级查询的数据传递到后台,后台通过动态sql实现动态查询。再使用limit对
    查询到的数据进行分页查询,然后将查询到的数据使用gm的属性显示在表格中
    limit a,b - 参数a表示当前页显示数据的下标或索引可以使用   (当前页-1)*pageSize计算
        - 参数b表示每一页显示的条数

18.动态sql用过哪些

if,where,sql,include

19.#与$区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快捷施法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值