JAVA初级工程师面试36问(二)

2024最新Java高频精选面试题讲解,高级java开发工程师面试题 至此,文章终于到了尾声。技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;项目经历:只写明星项目,描述遵循 STAR 法则;简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频[外链图片转存中…(img-laenPCAQ-1711102825640)] 阅读详情

第七问:    请简单描述你对Ioc(控制反转)的理解?

         一个类需要用到某个接口的方法,需要将类A和接口B的实现关联起来,最简单的方法是在类A中创建一个对于接口B的实现类C的实例,但是用这种方法显然两者的依赖太大.稍微好一点的方式是使用工程模式,实例类通过工厂类创建,减少了类A与接口B的实现类C的依赖,但是创建工厂类也不是很方便.而IOC相当于一个大的bean工厂,使用IOC后,只在类A中定义好用于关联接口B的实现方法,将类A,接口B和接口B的实现放在IOC容器中,通过一定的配置由容器来实现类A与接口B的实现C的关联.

第八问:    java接口为什么不能实例化?

             首先,我们需要明白实例化的含义。实例化实际意义是在jvm的堆中开辟出一块内存空间,比如Student s = new Student();此处声明Student对象s,并且实例化一个Student对象,实则是在堆中开辟出一块空间来存放Student对象,s则是指向这块空间,也就是内存中的一块地址。这块地址中所存放的值就是我们这个Student对象的一些属性。

    而接口中允许有什么:静态的属性以及方法声明。 接口中所有的东西的具体值都是存放在代码去和静态数据区的,所以接口的这块地址上并没有任何实际的值需要存储,那么为什么要给他一块地址来浪费空间呢。其实用底层代码在内存中开辟出一块空间很容易,那么为什么java设定不允许接口实例化呢,以我的理解而言,那就是接口的实例化没有任何实际意义,只会占用一块内存空间,却不会在这块空间中放任何实际的值,所以java主动去规避掉了这个问题.

 

 

 

第九问:    谈谈你对异常的理解?

      此处放一张图便于理解

一  什么是编译时异常,什么是运行时异常? 

运行时异常可以通过改变程序避免这种情况发生,比如,除数为0异常,可以先判断除数是否是0,如果是0,则结束此程序。从继承上来看,只要是继承RunTimeException类的,都是运行时异常,其它为编译时异常。

二编译时异常和运行时异常的区别

使用抛出处理方式处理异常时,对于编译时异常,当函数内部有异常抛出,该函数必须声明,调用者也必须处理,运行时异常则不一定要声明,调用者也不必处理;编译时异常必须在函数中声明,调用者也必须在函数中处理.

 

三、常见的编译时异常

1.FileNotFoundException

2.ClassNotFoundException

3.SQLException

4.NoSuchFieldException

5.NoSuchMethodException

6.ParseException

四、常见的运行时异常

1.NullPointerException

2.ArithmeticException

3.ClassCastException

4.ArrayIndexOutOfBoundsException

5.StringIndexOutOfBoundsException

 

第十问:    为什么springboot一个main方法就可以让服务启动起来?

       此处问题考的是springboot的一些注解以及springboot的启动流程,大致总结为以下步骤:

  启动时候 :

  1.会创建一个springApplication对象实列,调用springApplication的实列方法,在springApplication实列初始化的时候会做三件事情

第一件:判断classpath下查找并判断与之对应的ApplicationContext类型,并且创建出来这个ApplicationContext

第二件:springFactionLaoder在classpath下找出并加载所有可用的applicationContextInitializer

第三件:springFactionLaoder在classpath下找出并加载所有可用的applicationListener ,找出main方法的定义类

2.springApplication实例初始完成后,开始执行run方法逻辑,首先会遍历所有的springFactions查到的springApplicationRunListener,接着调用started方法,告诉springApplicationRunListener执行

3 创建并配置当前springboot应用要使用的环境(environment)

4.遍历所有的environment,并调用prepered方法,告诉springboot环境已经准备好了

5.根据设置springContext的class类型以及初始化阶段的推断结果,来决定当前spingboot应用创建什么类型的applicationContext,并且把我们的的环境设置进去,然后创建出这个applicationContext

6.再次执行springFactionLaoder在classpath下找出并加载所有可用的applicationContextInitializer

7.springFactionLaoder在classpath下找出并加载所有可用的applicationListener

8,.通过@enableAutoconfiguration获取所有的配置以及IOC容器配置加载到我们准备好的applicationContext

9.遍历所有的applicationListener ,调用contextLoader的方法

10.调用applicationContext的refresh()方法,对我们的IOC容器初始化完成

11.在applicationContext中查找是否有注册的commandeLineRuner,有就遍历

12.最后一步就是遍历springApplicationRunListener调用finished()方法,有异常会抛出来,整个过程结束。

第十一问:  说说你知道的springBoot常用的注解?

   @PathVaribale 获取url中的数据 

   @RequestParam 获取请求参数的值 

   @GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写

   @RestController是@ResponseBody和@Controller的组合注解。

   @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解

      其中 @ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 

  @EnableAutoConfiguration 自动配置。

  @ComponentScan 组件扫描,可自动发现和装配一些Bean。

  @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。

  @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。

   @Configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

   @Autowired:自动导入依赖的bean

   @Service:一般用于修饰service层的组件

   @Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

  @Bean:用@Bean标注方法等价于XML中配置的bean。

  @Value:注入Spring boot application.properties配置的属性的值

 

第十二问:  说说springMVC实现原理?

   1.当客户端(浏览器)发送请求,直接请求到DispatcherServlet。

   2.DispatcherServlet会根据请求信息来调用HandlerMapping,解析请求对应的Handler。

   3.解析到对应的Handler后,开始由HandlerAdapter适配器处理。

   4.HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。

   5.处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是个逻辑上的View。

   6.ViewResolver会根据逻辑View查找实际的View。

   7.DispaterServlet把返回的Model传给View。

   8.通过View返回给请求者(浏览器).

  

未完待续.....

 

 

基于AutoDL复现A-LOAM Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6。在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。用MobaXterm解决该问题!搜到的一个解决方式:该问题属于ceres版本问题,将A-LOAM下的。 阅读详情

相关推荐

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

yingtu666的博客 5149

JAVA初级工程师面试36问(完结)

第三十一问: 说一下线程中sleep()和wait()区别? 1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行。但是它并没有释放同步资源锁只是让出。 2.wait()是让当前线程暂时退让出同步资源锁,让其他线程来获取到这个同步资源在调用notify()方法,才会让其解除wait状态,再次参与抢资源。 3. sleep()方法可以在任何地方使用,而wait()只能在同步方法或同步块使用。 ...

FindHuni的博客 5249

FPGA设计中的扇出约束实战:从XDC到代码优化的全流程解析

本文全面解析FPGA设计中扇出约束的重要性与应用,详细介绍了从XDC约束文件设置到HDL代码优化的全流程实战技巧。通过MAX_FANOUT约束控制信号负载,结合寄存器复制和物理优化策略,有效解决高扇出导致的时序违例和布线拥塞问题,提升设计性能和可靠性。

nept的博客 796

springboot 修改默认加载的配置文件不为application.properties

在springboot启动的过程中,默契情况下会在classpath路径下加载application.properties当做系统配置文件,但有时候我们想要替换成另一个文件,可以 通过以下方式: SpringApplication  将从以下位置加载 application.properties  文件,并把 它们添加到Spring  Environment  中: 1. 当前目录下的 /

码农的世界你不懂 9807

clumsy一款模拟弱网的工具

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果。

klb5555的专栏 2551

无符号整数、带符号整数溢出问题

让我们详细讲解一下带符号整数溢出和无符号整数溢出问题中,符号标志位 (SF)、零标志位 (ZF) 和进位标志位 (CF) 的行为方式

weixin_49342084的博客 2084

java工程师面试经典题目整理

本人已面试成功 1、面向对象的特征有哪些方面? 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(overr

每天进步一点点。。。 5万+

【拯救C盘】一文搞懂Windows修改Anaconda默认的虚拟环境存放路径及其原理

Anaconda创建的虚拟环境可能会默认保存在C盘,但C盘的存储空间很宝贵,由于每个虚拟环境的大小可能达到n个GB,稍不注意就会遇到C盘红色警告。因此有必要做点什么来拯救被虚拟环境占用的大部分空间!!!

Roach007的博客 3万+

SpringBoot——run启动流程

SpringApplicationRunListener是SpringBoot应用的main()执行过程中接不同执行时点通知的【监听者】。 applicationListener是Spring框架对【监听者】模式的一种框架实现 SpringBoot中添加自定义的ApplicationListener的两种方式 ApplicationContextInitialzerCommandLineR

hackerHL的博客 7661

Unity+Hybridclr发布WebGL记录

问题不多,比预想中的顺利,如果遇到问题建议先看Hybridclr的常见问题里面有没有解决方案,没遇到Hybridclr的报错,所以记录的问题里面没有Hybridclr相关的。导出设置里的压缩格式选择了Brotli,而服务器或浏览器不支持,据说是可以拓展服务器配置使支持Brotli,但是由于我本人是IIS小白,所以换了种压缩格式,在publishing Settings修改Compression Fromat为Gzip。3.在浏览器运行之后视图一直闪烁。,修改配置,这个网上很常见。

a598211757的博客 1037

5、卡尔ibration中Denavit - Hartenberg与Hayati约定的转换

本文详细介绍了机器人运动学中Denavit-Hartenberg(DH)参数与Hayati参数的定义、适用场景及其相互转换方法。重点分析了两种参数在描述关节坐标系变换时的差异,特别是在处理平行或接近平行关节轴时的稳定性问题,并给出了从DH到Hayati及反向转换的具体数学公式与流程图。通过参数转换,可在不改变运动学模型的前提下提升建模精度与计算鲁棒性,适用于机器人标定与运动学分析等应用场景。

h0i1j2k3l的博客 120

初级java程序员面试常见问题

经常会遇到的一些眼前着急的小问题!!!!!1、数据库相关知识点(oracle与mysql的区别,数据库的优化,表锁和行锁)2、多线程的控制(同步锁和互斥锁;悲观所和乐观锁)3、集合的理解(list,set,map)4、springAOP的相关知识点以及spring的DI和ioc5、springMVC的执行流程以及springMVC的相关注解6、事务的解决方案7、接口,抽象,封装,多态8、Strin...

MyFuture_7的博客 4187

DirectX function “GetDeviceRemovedReason“ failed with DXGI_ERROR_DEVICE_HUNG (“The GPU will not resp

游戏报错"DXGI_ERROR_DEVICE_HUNG"的解决方案 在使用RTX 40系显卡运行FIFA 23等游戏时,可能出现DirectX报错导致游戏崩溃。这主要由于最新显卡驱动与DirectX 12的兼容性问题。解决方法包括: 降级显卡驱动版本 修改游戏配置文件,将DIRECTX_SELECT设为1 在显卡控制面板中关闭垂直同步、抗锯齿、DLSS 3等功能 调整电源模式为性能优先 这些操作可以有效解决因驱动兼容性导致的游戏崩溃问题。

猿小白的博客 3886

JAVA初级工程师面试36问(一)

前几天,一个老家的弟弟正在找java初级开发工程师的岗位,问我一般会问什么问题? 第一时间听到这个,我在想:what? 除了刚开始找工作的第一年面试几家公司问了一些基础项东西,后面两家公司基本都是内推进去的,问的问题也是偏项目,偏实际,理论大概也没有问什么,当然,作为一个爱回答问题的我,是肯定要给他指明方向的,于是 ,我便综合各方面给他说了一些东西,同时记录下来,万变不离其宗.基础知识是学习一个新东西和升华一个东西必不可少的条件. 第一问: 请说一下String和StringB...

FindHuni的博客 1307

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA初级工程师面试36问(三)

第十三问:描述一下JVM加载class文件的原理机制? 答:JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件. 第十四问: 谈谈你对抽象类和接口的异同点? 答:1.抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。 2.一个类如果继承了某个抽象类或者实现了某...

FindHuni的博客 719

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java核心技术36讲:Oracle首席工程师帮你搞定BAT面试

作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万,而自己却囊中羞涩。于是你也想看看新机会,找个新平台,好好发展。 但是面试的时候,当那个笑眯眯的面试官问出那些你再熟悉不过的 Java 问题时,你只是感觉似曾相识,却怎么也回答不到点上。比如 Hash...

weixin_43213222的博客 301

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JAVA初级工程师面试36问(五)

第二十五问:请简述动态代理的几种实现方式,它们分别是什么以及区别? 在java中,动态代理有两种主要的实现方式,分别为:JDK 动态代理和 CGLIB 动态代理. JDK 动态代理就是基于 JDK 实现的代理模式,主要运用了其拦截器和反射机制,其代理对象是由 JDK 动态生成的,而不像静态代理方式写死代理对象和被代理类。JDK 代理是不需要第三方库支持的,只需要 JDK 环境就可以进行代理,使用条件: 1.被代理的对象必须要实现接口;(可以直接说这一句,) 2.使用Pro...

FindHuni的博客 626

JAVA初级工程师面试36问(四)

在性能测试中发现cpu占用过高应该如何进行分析? 1.查找进程 top查看进程的占用资源情况,可以很明显看出java的那个进程占用的过高cpu 2. 查找线程 使用 top -H -p <pid> 查看线程占用情况 3.查找java的堆栈信息 将线程id转换成十六进制 #printf %x 15664 ...

FindHuni的博客 704

Java岗面试必问,高级java工程师面试

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**Netty等等**[外链图片转存中…(img-jc3ILD7H-1709989573742)]本文已被。

m0_60607245的博客 449

JAVA 面试很难吗?Oracle 工程师教你轻松搞定BAT!

我自己的故事作为一个 Java 程序员,平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,感觉自己无所不能。然而偶尔的一次聚会,听说和自己一起出道的同学早...

云原生实验室 229

java工程师技术成长之路

1、新手阶段,全面、扎实地掌握语言的基本要素是你的当务之急。当然,除了语言,你还需要了解与编程相关的其他周边知识。2、工作了几年,整天忙于业务代码,初级工程师很容易困惑下一步的方向在哪里,并且相当多的程序员长期停留在高级新手的阶段。这个阶段,你要试着用问题驱动的方式,多问几个为什么,试着去理解语言背后的实现原理。3、作为一名中级工程师,你要学会用白盒的视角看待技术,平时在工作中也要多问几个为什么。正所谓,“知其然知其所以然”。4、你要努力逐步成为团队的核心成员,核心成员意味着能扛事。

weixin_43837268的博客 1204

Java初级工程师面试题精选2

说明:本面试题大多都是根据《Java面试问题集》、《Java程序员面试宝典》、《程序员面试宝典》等书籍概括精选而来,其中也补充了一些自己在找工作的过程中遇到的面试题,虽然不能遍及Java的所有知识点,但绝对都是面试会问到的高频知识点。 31.面向对象有哪些特点?   四个方面:抽象,封装,继承,多态。   http://seapigxie.iteye.com/blog/1109925

文景大大 1855

Java开发工程师面试题

面试题,这是面向Java初级(1-3)年开发人员所需要的.当然不是全部. 对与我自己而言需要掌握的有1-11,13,16,17,18.以及19一部分. 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java

银刺猬的博客 1607

java思想编程kindle版电子书下载,,java初级开发工程师面试题

既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。

D1561691的博客 682

不愧是阿里大牛整理的java高级工程师面试 1000 题,面面俱到,太全了

这次收集整理的《java 高级工程师面试 1000 题》,不说大话,你若能啃下,轻轻松松跳个槽涨个 10K 的难不成比登天还难?那是不可能滴,不管你是在准备面试也好,学习也好,这些笔记面试资料对你来说都是很有帮助的。

qq13321123的博客 5785

写给Java工程师的面试指南

杨晓峰老师是资深Java工程师,也是极客时间《Java核心技术36讲》的专栏作者,他分享的内容有:\n\n如何准备一份「工程师范儿」的简历?\n如何在面试中体现代码能力\nFace to Face面试必考Java知识点\n大厂面试实例分析\n\n如何准备一份「工程师范儿」的简历?\n定制简历:我自己的经验是,每个岗位的具体要求都不同,因此大家不要用一个通用的简历去应付所有的岗位,最好是根据特定公司...

nostrud ipsum6 225
上一篇: JAVA初级工程师面试36问(一)
下一篇: JAVA初级工程师面试36问(三)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值