面试题--Java(一)

java初级工程师面试题一 今天去面试了,做了份笔试题,很基础,由于没有关注基础最后还是挂了。在这里对今天的面试做一个总结以防止下一次再犯同样的错误。1.写出jsp的四个作用域     解:application,session,request,pageContext2.描述servlet的生命周期?    解:首先调用init()方法初始化,然后调用service()方法处理请求,最后调用destroy()销毁。由jvm进... 阅读详情

转载自 《2018java程序员面试题整理》

1.Springmvc独有的5个注解

1)@Controller

@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。

2)@RequestMapping

既可以作用在类级别,也可以作用在方法级别。当它定义在类级别时,标明该控制器处理所有的请求都被映射到 /favsoft 路径下。@RequestMapping中可以使用 method 属性标记其所接受的方法类型,如果不指定方法类型的话,可以使用 HTTP GET/POST 方法请求数据,但是一旦指定方法类型,就只能使用该类型获取数据。

3)@PathVariable

获取路径变量 与requestMapping(“{value}”)配合使用

4)@RequestParam

获取携带参数 与requestMapping(“{value}”)配合使用

5)@RequestBody

获取请求体

6)@ResponseBody

将返回结果作为响应体

7)@RestController

Responbody + Controller

8)@HttpEntity

HttpEntity除了能获得request请求和response响应之外,它还能访问请求和响应头

9)@ModelAttribute

在hibernate里也有

2.IOC容器的理解

IoC—Inversion of Control,即“控制反转”,不是什么技术,是一种设计思想

IoC意味着将设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

3.请谈谈你对AOP的理解。

AOP:Aspect Oriented Programming 面向切面编程。它是为解耦而生的。

如果多个类中出现相同的代码,应该考虑定义一个共同的抽象类,将这些相同的代码提取到抽象类中。

如果我们需要日志记录,它在方法调用前启动,在方法调用返回前结束,并在内部记录结果信息。(模板抽象设计模式)

Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。

Spring创建代理的规则为:

1、默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了
2、当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB

4.请说说HTTP协议中GET请求和POST请求的区别。

HTTP全称为Hyper Text Transfer Protocol,浏览器和服务器的交互是通过HTTP协议执行的,而GET和POST也是HTTP协议中的两种方法。GET,POST,PUT,DELETE

GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。

GET交互方式是安全的,GET交互方式是从服务器上获取数据,而并非修改数据

GET交互方式是幂等的,对同一个URL的多个请求,得到的结果是相同的。就像数据库查询,不同的数据库连接对同一个数据库表用相同条件查询时,得到的结果也是一样的
POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。

涉及到信息的修改,就会有安全问题 /post不是幂等的 delete和put是幂等的

一般的POST交互是必须要用到表单的,但是表单提交的默认方法是GET,如果改为POST方式,就需要修改表单提交时的Method。

GET方式:

1、GET方式是以实体的方式得到由请求URL所指定资源的信息,如果请求URL只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
   也就是说,GET的到的信息是资源,而不是资源的处理过程。
2、请的求的数据会附加在URL之后,以?分隔URL和传输数据,多个参数用&连接。
   URL编码格式采用的是ASCII编码,而不是Unicode,即所有的非ASCII字符都要编码之后再传输。
3、因为URL的长度限制,GET方式传输的数据大小有所限制,传送的数据量不超过2KB。
4、GET方式服务器端用Request.QueryString获取变量的值。
5、GET方式传输的参数安全性低,因为传输的数据会显示在请求的URL中。

POST方式:

1、用来向目的服务器发出请求,要求它接收被附在请求后的实体,并把它当做请求队列中请求URL所指定资源的附加新子项。
2、POST方式将表单内各个字段和内容放置在HTML HEADER中一起传送到Action属性所指定的URL地址,用户是看不到这个过程的。
3、POST方式传送的数据量比较大,一般被默认为没有限制,但是根据IIS的配置,传输量也是不同的。
4、POST方式在服务器端用Request.Form获取提交的数据。
5、POST方式传输的数据安全性较高,因为数据传输不是明显显示的。

5.请介绍一下Cookie和Session的工作原理。

session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。

session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session这种方法将失效。

session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存

简单的说,当你登录一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上面,客户端每次请求服务器的时候会发送 当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录,或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造,但是如果你能够获取某个登录用户的sessionid,用特殊的浏览器伪造该用户的请求也是能够成功的。sessionid是服务器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性,我曾经就遇到过一次。登录某个网站,开始显示的是自己的信息,等一段时间超时了,一刷新,居然显示了别人的信息。
.
如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。服 务器会解释为 cookie变量。所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。

6.Linux系统中如何通过命令查看进程?如何在这个基础上查看具体某一个进程?

ps -aux 显示所有进程  ps -ef

Ps -aux |grep mysql 查看某个进程

netstat -anp|grep 3306  查看进程id对应的程序

7.Linux系统中如何对一个tar包解压缩?

压缩  tar -zcvf [压缩包文件名] [要压缩的内容]

解压缩:解压到当前目录下

tar -zxvf [压缩包文件名]

unzip [压缩包文件名]

8.请介绍一下数据库事务的ACID属性。

1)原子性(Atomicity)

所谓原子性就是将一组操作作为一个操作单元,是原子操作,即要么全部执行,要么全部不执行。不可再分

2)一致性(Consistency)

事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。

3)隔离性(Isolation)

隔离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

4)持久性(Durability)

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。即一旦一个事务提交,DBMS(Database Management System)保证它对数据库中数据的改变应该是永久性的,持久性通过数据库备份和恢复来保证。

9.请说说List集合和Set集合的区别。

1.List,Set都是继承自Collection接口,Map则不是

2.List特点:元素有放入顺序,元素可重复
   Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉
   注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set的Object必须定义equals()方法,
   另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。

3.Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

4.Map适合储存键值对的数据

5.线程安全集合类与非线程安全集合类

LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;

HashMap是非线程安全的,HashTable是线程安全的;

StringBuilder是非线程安全的,StringBuffer是线程安全的。

10.Maven工程的坐标由哪三个部分构成?Maven坐标的用途是什么?

1、groupId

顾名思义,这个应该是公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以”.”分隔,第一部分是项目用途,比如用于商业的就是”com”,用于非营利性组织的就是”org”;第二部分是公司名,比如”tengxun”、”baidu”、”alibaba”;第三部分是你的项目名

2、artifactId

可以认为是Maven构建的项目名,比如你的项目中有子项目,就可以使用”项目名-子项目名”的命名方式

3、version

版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本。在Maven中很重要的一点是,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,这非常重要,我在使用和研究Maven的时候多次感受到了这点。

  0.0.1:版本号
      大版本(主版本).中版本(分支版本).小版本(迭代版本)
      大版本:(项目架构发生变化,设计发生变化,模块有重新组织)
      中版本:(有模块上的修改,新增了功能)
      小版本:(解决了很多bug以后,升级一下小版本);    
  RELEASE:正式发布版(经过测试基本没有bug,可以稳定使用)
  SNAPSHOT:快照版;(这是一个非常不稳定的版本,经常发生变化)
  Alpha:(内测版)
  Beta:(公测版)
java 常见面试题(一) 又到年底了,很多童鞋可能要跳槽,找工作,面试,这里给大家分享一些差常见java面试题,仅供大家参考。 阅读详情

相关推荐

Android面试题(一)Java高频面试题

一、Java基础: Java的基本数据类型有哪些,各自占有多少个字节: 基本类型 字节 byte 1 char 2 short 2 int 4 long 8 float 4 double 8 boolean - "=="与equals的区别: 1)对于"==",比较的是值是否相等: ...

红日 3023

Maven详解

一.前言     以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar 包的。最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目结构只停留在了解阶段,没有深入的使用与理解,刚好最近看了一篇关于Maven的详解;就开始深入学习一下Maven的具体应用。 二.Maven的作用在开发中,为了保证编译通过,我们会到处去寻找jar包,当编译通过了,运

zheshanye的博客 296

同源策略与跨域

前言:最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到。大致看了下腾讯云关于设置跨域访问的教程,按照前端同学给的域名等选项就给配了,而且测试下来也是好的。但是呢一直不知道什么是跨域这里就做一个简单的学习记录。 一、同源策略 同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。同源策略会阻止一个域的javascrip脚本和另一个域的内容进行交互,是用于隔离潜在恶意文件的关键安全机制;关于这一点我们后面会举例说明。...

mijichui2153的博客 1万+

maven详解之坐标与依赖

maven坐标和依赖详解, maven依赖的调优技术 maven依赖配置的最佳实践 maven配置的常见问题的解决方案

Dragon's Life 2万+

招标文件智能解析系统开发文档

本系统是一个基于OCR与大语言模型的招标文件智能解析平台,专门用于处理和分析招标文件,自动提取关键信息并进行结构化展示。

警世龙的技术博客 1925

几率大的网络安全面试题(含答案)

其他篇章:Java校招极大几率出的面试题(含答案)----汇总 本文面试题汇总: 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理 rip协议是什么?rip的工作原理 什么是RARP?工作原理 OSPF协议?OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手? tcp为什么要三次握手? dns是什么?dns的工作原理 一次完整的HTTP请求过程 Cookies和ses...

睶 6万+

Maven(三)在Eclipse中使用Maven与Maven坐标

这一篇讲解一下在eclipse中使用maven,在一些高版本的eclipse中是自带maven插件的。所以这里就不在讲解怎么安装插件了。 接下来我们创建一个MavenFirst项目 一、在Eclipse中创建一个MavenFirst项目   第一步:创建一个Maven工程        第二步:选择创建java项目——>next        第三步:填写GAV  ...

a878787877的专栏 352

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

maven坐标详解

上一篇文章,总体介绍了maven,今天我就maven的坐进行详细介绍。在maven的pom.xml文件中:1、maven基本坐标   maven坐标元素包括groupId,artifactId,version,packaging,classifier。只要提供正确的坐标元素,maven就能找到对应的构件。   groupId:定义当前这个maven项目录属的实际项目,表示方式通常与域名反向相对应

eff666的博客 4896

Ubuntu18.04安装VCS、Verdi、dve全套教程亲测(有成功截图)

通过下面十个步骤,我们就可以在ubuntu上使用vcs、verdi、dve等软件! 一、安装ubuntu系统,这个不在这里讲了,重点叫安装VCS、Verdi等软件 下面的过程一部分同其他网上流程一致,对其中部分进行修改。如果按照其他网上教程是不会成功的,本人亲测,下面是我试验网上不同文章的流程遇到的错误摸索后总结的流程,按照步骤保证可以成功运行,包括破解流程,使用时间不限制在2020年,可以自定义2030等等。 二、安装文件结构 –synopsys_installer #此程序用于安装下面三个程序。所以你想

QQ_778132974的博客 6364

把 ABAP 接到外部世界的几条路, 从 Web Service 到 RFC、BAPI 与 IDoc 的完整理解

摘要: ABAP 的连接能力是其长期成为企业核心的关键,不仅支持通用协议(HTTP、SOAP、XML),还保留了 SAP 特有的技术(RFC、BAPI、IDoc)。Web Service 是跨系统通信的主轴,依赖 SOAP/WSDL 实现契约化协作,而 Enterprise Service 更强调业务语义的复用与治理。经典技术如 RFC 和 BAPI 因高效稳定仍广泛使用,尤其适合紧耦合场景。ABAP 通过分层工具箱(如代理生成、服务注册)实现灵活集成,平衡新旧技术,满足多样化的企业连接需求。 (字数:15

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 138

Maven坐标组成

1:Maven坐标的定义: Maven坐标就是使用坐标来对maven文件进行唯一识别的一套规则,坐标是为了方便别的地方引用到项目。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确的坐标元素,Maven就能找到对应的构件,首先去你的本地仓库查找,没有的话再去远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址下...

qq_40687707的博客 2320

PHP与Node.js的对比及优缺点分析

PHP和Node.js是两种常用的服务器端编程语言,它们在不同的应用场景下各有优势和劣势。本文将全方位比较PHP和Node.js的特点,以及它们在编程中的优缺点,并提供相应的源代码示例供参考。需要注意的是,本文只是对PHP和Node.js的一些优缺点进行了简要介绍,实际应用中还需要考虑其他因素,如团队经验、项目规模和预算等。最终的选择应该基于全面的评估和需求分析。PHP:PHP是一种同步阻塞的编程语言,它的处理方式是一次只处理一个请求。Node.js:Node.js的性能较高,特别适合处理高并发的请求。

ByteSparkX的博客 887

一、java基础面试题

本片文章主要总结了java基础常见的面试题,虽然面试中基础问的不是很多,但是不能不会,大家可以根据目录选择自己没有掌握的,也可以全部看一遍,过一遍自己的基础,后面java一些其他技术的面试题也会陆陆续续的发布,为大多面试者提供一个复习的平台。感兴趣的铁铁可以关注下本专栏;在本系列文章中有我自己在思考题目的时候,写的简记,或者我认为重点的都加粗进行了处理,给大家提供借鉴,题目大都是从各个地方总结而来,后面有新题目也会不断的进行扩充。

懒洋洋的博客 2433

2025年开源气象大模型的实现原理与实践指南

气象大模型在人工智能时代实现了革命性突破,通过深度学习技术以更低的计算成本达到甚至超越传统数值天气预报的精度。开源气象大模型的出现使得全球研究者和机构都能参与气象AI的创新。本文详细解析了开源气象大模型的实现原理,包括核心架构、数据准备、训练方法和实际预测流程,并提供了实践指南。核心架构主要采用Transformer、图神经网络和扩散模型,处理多模态数据融合和时空联合建模。数据体系构建涉及数据来源、预处理和增强策略。模型训练关键技术包括损失函数设计、分布式训练优化和训练过程监控。微调与领域适应策略包括迁移学

专注AI大模型,软件混淆,授权 1179

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JAVA面试题解惑系列(一)——类的初始化顺序

   看到一个叫java 的面试题解惑系列 的 很不错   参照thinking in java 看 可以解决很多问题  见附件

包子你伤不起 150

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java面试题一

企业Java面试题整理(200道附详细答案) Java 1+2+3……+100构建一个函数。(易) 答案:     public int Sum(int n){     if(n == 1)     return 1;     else     return n + Sum(n – 1);     }   描述冒泡算法。(易) 答案:

hongweideng的专栏 3538

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java高频面试题一

List 接口有三个实现类。Set 接口有两个实现类。Map 接口有三个实现类。

qq_45246377的博客 1100

Java面试题一

Java面试题一 写出如下代码 的运行结果 public static void main(String[] args) { int i=1; i=i++; int j=i++; int k=i+ ++i*i++; System.out.println("i="+i); System.out.println("j="+j); System.out.println("k="+k); }

qq_43358873的博客 242

Java后端面试题总结一

简介 分享几道常见的Java后端基础面试题,以下部分内容来自网络,只是笔者学习的一些总结,方便后面翻阅查看。 List 和 Set 的区别? List , Set 都是继承自 Collection 接口 List 特点:元素有放入顺序,元素可重复 , Set 特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,元素虽然无放入顺序,但是元素在set中的位置是有该元素的 HashCode 决定的,其位置其实是固定的,加入Set 的 Object 必须定义 equals ()方法 ,另外list支持for循环,

weixiaohuai的博客 741

Java面试题总结一

JVM 可以理解的代码就叫做字节码(即扩展名为.class的文件)在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。

qq_53537633的博客 816

Java基础面试题(一)

java基础经典面试题目

heikefu的博客 1627

java面试题(一)

Java 中锁的实现主要分为两类:​(1)synchronized 关键字​底层依赖 对象头(Mark Word) 和 Monitor(监视器锁):​对象头存储锁状态(无锁、偏向锁、轻量级锁、重量级锁);​重量级锁通过 Monitor 实现:每个对象关联一个 Monitor,线程竞争锁时需获取 Monitor 的所有权(涉及操作系统互斥锁,开销较大)。​JDK 6 后优化:引入偏向锁(减少无竞争时的开销)、轻量级锁(自旋锁,避免立即升级为重量级锁)。​。

开往1982的博客 716
上一篇: Activiti工作流框架学习六:与Spring框架整合
下一篇: Tomcat部署JavaWeb项目:每一个页面第一次打开404,刷新后才正常显示
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值