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

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

第三十一问:   说一下线程中sleep()和wait()区别?

 

        1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行。但是它并没有释放同步资源锁只是让出。

         2.wait()是让当前线程暂时退让出同步资源锁,让其他线程来获取到这个同步资源在调用notify()方法,才会让其解除wait状态,再次参与抢资源。

        3. sleep()方法可以在任何地方使用,而wait()只能在同步方法或同步块使用。

 

第三十二问:   请问spring是如何处理循环依赖的?

 

              spring中主要是采用了三级缓存的一种模式来解决循环依赖,内在就是三个缓存的map结构。他们分别是singletonObjects,singletonFactories,earlySingletonObjects。(此图是网上看到的,感觉很不错,如侵权告知删除)

  解释:

singletonObjects:一级缓存,存储beanName(key)和bean实例(value)之间的关系,这里存储的bean实例是已经完全创建完成的bean实例

earlySingletonObjects:二级缓存,也是存储beanName和bean实例之间的关系,注意和singletonObjects的区别,这里存储的bean实例是没有创建完成的bean实例,即该bean还在创建过程中,为了解决循环引用的问题,将未创建完全的bean缓存起来。
singletonFactories:三级缓存,用于保存beanName和bean工厂之间的关系。当三级缓存创建bean成功后,会将bean放入二级缓存,并将beanName对应的beanFactory从singletonFactories中移除。

ObjectFactory:有getobject()方法,在创建单例bean的过程中,为了解决循环依赖问题,会创建beanName对应的ObjectFactory放入SingletonFactoies中,达到提前曝光bean的目的。三级缓存singletonFactory.getObject()(三级缓存)获取,如果获取到了则:
    this.earlySingletonObjects.put(beanName, singletonObject);
    this.singletonFactories.remove(beanName);

为什么要三级缓存?
       getEarlyBeanReference中支持AwareBeanPostProcessor这样的后置处理器,给用户提供接口扩展的。

 

第三十三问:   请问springboot 微服务 如何解决跨域问题?

 

     1.方法级别的跨域访问

 

                

     2.全局跨域访问

               

 

第三十四问:   请问JVM 有哪些基本的垃圾回收算法?

          

   一、按照基本回收策略

               1.引用计数 :  

                   对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象(无法解决循环引用)

              2.标记-清除

                    此算法分为两个阶段.第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把没有标记的对象清除(需要暂停整个应用,同时会产生碎片)

              3.复制

                   此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中(每次只处理正在使用中的对象,不会出现“碎片”问题。就是需要两倍内存空间) 

             4.标记-整理

                  此算法结合了“标记-清除”和“复制”两个算法的优点。也是分两阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整个堆,把清除未标记对象并且把存活对象“压缩”到堆的其中一块,按顺序排放。避免了碎片问题,也避免了“复制”算法的空间问题。

     二、按分区对待的方式

             1.增量收集

                   实时垃圾回收算法,即在应用进行的同时进行垃圾回收

             2.分代收集

 

                 基于对对象生命周期分析后得出的垃圾回收算法。把对象分为年青代、年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式中的一个)进行回收。现在的垃圾回收器(从J2SE1.2开始)都是使用此算法的.

 

 

 

      三、按系统线程

               1.串行收集

                 串行收集使用单线程处理所有垃圾回收工作,因为无需多线程交互,实现容易,而且效率比较高。但是,其局限性也比较明显,即无法使用多处理器的优势,所以此收集适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。

            2.并行收集

                 并行收集使用多线程处理垃圾回收工作,速度快,效率高。而且理论上CPU数目越多,越能体现出并行收集器的优势。

            3.并发收集

                 相对于串行收集和并行收集而言,前面两个在进行垃圾回收工作时,需要暂停整个运行环境,而只有垃圾回收程序在运行,因此,系统在垃圾回收时会有明显的暂停,而且暂停时间会因为堆越大而越长。

 

第三十五问:   请问JVM 如何解决同时存在的对象创建和对象回收问题?

 

       1.垃圾回收线程是回收内存的,而程序运行线程则是消耗(或分配)内存的,一个回收内存,一个分配内存,从这点看,两者是矛盾的。

       2.因此,在现有的垃圾回收方式中,要进行垃圾回收前,一般都需要暂停整个应用(即:暂停内存的分配),然后进行垃圾回收,回收完成后再继续应用。(缺点:当堆空间持续增大时,垃圾回收的时间也将会相应的持续增大,对应应用暂停的时间也会相应的增大。就是一些对相应时间要求很高的应用,比如最大暂停时间要求是几百毫秒,那么当堆空间大于几个G时,就很有可能超过这个限制,在这种情况下,垃圾回收将会成为系统运行的一个瓶颈。

      3.并发垃圾回收算法,使用这种算法,垃圾回收线程与程序运行线程同时运行。在这种方式下,解决了暂停的问题,但是因为需要在新生成对象的同时又要回收对象,算法复杂性会大大增加,系统的处理能力也会相应降低,同时,“碎片”问题将会比较难解决.

     因此,针对不同引用做不同的调优处理.

 

第三十六问:   谈谈你对Http协议与TCP协议简单理解?

             1.Tcp协议对应着传输层,而HTTP协议对应着应用层;

             2.从本质上而言,他们之间是没有区别的,因为http协议是建立在TCP协议之上的,比如,当我们发送一个http的请求,那么http就会通过tcp来建立一个连接到服务的一个通道,Http会立即将TCP断开,因此我们也说http是一种短连接或者无状态连接。

          那什么叫无状态或者短链接?

            1. 所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持这个连接并且在内存中记住一些信息状态,而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住状态,成为了无状态连接。

            2.如果我们每次访问一个页面都要建 立一个TCP的连接,那效率就慢了,从HTTP/1.1开始,默认都开启了Keep-Alive,保持连接性,也就是说当一个网页打开完成后,http数据的tcp连接不会再关闭了,会有一个保持的时间,但是这个时间一到也会自动关闭。而http是短连接,tcp是长连接。因为,http每次请求完后就会关闭,而通过socket编程使用TCP协议的时候,控制开关闭的代码在我们手上,我们只要不关闭就会让连接状态一直保持着。

 

         后:

              至此,三十六问系列全部结束,每一个问题都可以发散带每一面,每个知识点,想要弄清除底层很多东西 就需要不断学习探索了,  希望可以帮助你们得面试,帮助你们巩固知识

   

 

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类 本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。 阅读详情

相关推荐

【深度剖析】三一重工的数字化转型(中篇)

三一重工在数字化转型方面取得了提高效率、降低成本、加强研发创新和改善内控管理等多方面的成效。本研究旨在通过对三一重工数字化转型的深入分析,引导企业思考在第四次工业革命与第三次能源革命交汇的超级技术窗口期,如何进一步把握发展机遇,并为同行业其他企业提供探索性的建议。作为装备制造行业的佼佼者,三一重工的数字化转型受到了业界的广泛关注。作为行业内首批接触并实践数字化转型的企业之一,三一重工的转型经验不仅成功,而且积累了丰富的理论与实践,为其他制造业企业的数字化转型提供了可借鉴的范例。

领信卓越的博客 2304

Java基础知识面试题

一、JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。 二、== 和 equals 的区别是什么? 1、对于基本类型,==比较的是值; 2、对于引用类型,==比较的是地址; 3、equals不能用于基本类型的比较; 4、如果

学Java,找哪吒 6万+

【驭风计划 算法训练营】周测4:习题11-4、8-4、12-4

给出 nn 个非负整数 x1,x2,⋯,xnx1,x2,⋯,xn,有 qq 个询问,第 jj 个询问给出一个非负整数 yjyj,求其中,xor 表示按位异或运算。

Mege1的博客 1042

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

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

FindHuni的博客 1307

Unidbg逆向阿里系App签名:从环境补全到算法还原实战

在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算

weixin_42525738的博客 936

金融科技数据源

数字金融开放研究平台

平平淡淡,戒急用忍,一生学闭嘴。 1755

110道Java初级面试题及答案(最新Java初级面试题大汇总)

史上最全Java初中级面试题,发现网上很多Java初级面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题,但第一未必全,第二未必有答案,第三虽然有答案,但未必能在面试中说,所以在本文里,会不断收集各种面试题,并站在面试官的立场上,给出我自己的答案。 如果不背 Java面试题的答案,肯定面试会挂! 这套Java面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的 1、为

架构师专栏 2万+

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1603

java初级开发面试题

java基础知识 Q1、equals和==的区别 ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同。 ==是对内存地址进行比较,而equals比较的是两个字符串的值是否相等。 ==指引用是否相同,而equals是比较值是否相同。 Q2:集合的父类是什么 List<T> extends Collection<T> Collection<T> entends Itera...

weixin_42032770的博客 1万+

ArcGIS与地理加权回归GWR【一】

因此,在实际问题研究中我们经常发现回归参数在不同地理位置上往往表现为不同,也就是说回归参数随地理位置变化,这时如果仍然采用全局空间回归模型(全局假设β是不会变得),得到的回归参数估计将是回归参数在整个研究区域内的平均值,如上所说某一个因素在ABC等不同的地理位置对房价的影响是不同的,假如采用全局空间回归模型,便忽略了数据的空间位置属性,只反映平均意义下因变量与自变量的相关关系,而不能有效反映回归关系的空间非平稳性的特征。当自变量为1个时,是一元线性回归,自变量为2个及以上时,称为多元线性回归。

JData_Engineer的博客 1373

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1732

Java面试汇总>>>初级工程师—面试1000题

面试汇总>>>Java后端开发1000题001:重载和重写有什么区别?阐述二者是什么?002:什么是线程池?线程池有什么优点?003:线程有几种状态,他们是怎么切换的呢?004:比较一下String与StringBuilder的区别?007:常量池是什么?以及作用008:什么是面向对象?阐述你对面向对象的理解009.JDK、JRE以及JVM是什么?各自区分是?010.Mybatis接口开发的好处有哪些 001:重载和重写有什么区别?阐述二者是什么? 重载: 意义:重载就是为了方便外界对方法进行调用,什么样的

m0_61402516的博客 3602

(第100天)Oracle GoldenGate 常见故障处理指南

OGG 运维的核心在于细致的配置管理和主动的问题排查。熟悉常见错误、掌握关键操作流程、并善用日志和调试工具,是保障数据同步任务稳定运行的关键。希望这份指南能帮助您更高效地解决 OGG 同步中遇到的问题。祝您运维顺利!

LuciferLiu_DBA 300

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

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

FindHuni的博客 934

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

FindHuni的博客 719

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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工程师技术成长之路

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

weixin_43837268的博客 1204

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

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

云原生实验室 229

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工程师的面试指南

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

nostrud ipsum6 225

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
上一篇: GO开发--记录调用阿里云短信服务
下一篇: 开篇--docker学习
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值