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

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

第十九问:   在性能测试中发现cpu占用过高应该如何进行分析?

 

           1.查找进程(  top查看进程的占用资源情况,可以很明显看出java的那个进程占用的过高cpu)

           2. 查找线程( 使用 top -H -p <pid> 查看线程占用情况)

           3.查找java的堆栈信息 (将线程id转换成十六进制) 

           4.使用jstack查询线程的堆栈信息( jstack <pid> |grep -a 线程id(十六进制) )

 

第二十问: 简述一下事务的隔离级别?

 

  1.未提交读( 事务的最低隔离级别,一个事务可以读到另一个事务未提交的数据。会出现脏读的情况.) 

  2.已提交读 (在一个事务修改数据过程中,如果事务没有进行提交,其他事务不能读取该数据。会出现不可重复读的现象.

  3.可重复读( 事务A在读取数据的过程中,事务B也可以对相同数据进行读取,但是不能进行修改直到事务A事务结束后,才会释放共享锁,这时事务B才可以增加排他锁,对数据进行修改。会出现幻读的现象.)

  4.序列化 ( 事务A在读取A表时,增加了表级共享锁,此时事务B也可以读取A表,但是不能进行任何数据的修改,直到事务A事务结束。随后事务B可以增加对A表的表级排他锁,此时事务A不能读取A表中的任何数据,更不能进行修改.)

 

第二十一问:请简单解释下脏读、不可重复读、幻读?

          脏读:事务A修改某个数据,同时,事务B来读取,此时,事务A在进行回滚,此时,事务B读取的是事务A回滚前的数据,                            即出现脏读。


          不可重复读:事务A读取A数据,事务B也读取A数据并修改了这个A数据,事务A在读取A数据会发现两次读取的不一样。


          幻读:事务A修改了表A的所有数据,同时事务B向A表插入一条数据,事务A在读A表,会发现还有一条没有修改的数据,就                           像出现了幻觉一样。
 

第二十二问:请问sql的书写顺序就是它的执行顺序吗?

             不是,sql的书写顺序跟执行顺序不一样的.   

             书写顺序  :

                SELECT →FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY→ LIMIT

 

             执行顺序:

                FROM → JOIN → ON → WHERE → GROUP BY → HAVING → SELECT → ORDER BY→ LIMIT

第二十三问:请简述一下存储引擎MyISAM与InnoDB 区别与作用?

 

        MyISAM(5.5 版本前默认引擎)

  1. 只支持表级锁,不支持行锁。用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁 (读取时对需要读到的所有表加锁,写入时则对表加排他锁;)
  2. 不支持事务
  3. 不支持外键
  4. 不支持崩溃后的安全恢复                    

 

       InnoDB (5.5 版本后默认引擎)

  1. 支持行锁,采用MVCC来支持高并发,有可能死锁
  2. 支持事务
  3. 支持外键
  4. 支持崩溃后的安全恢复

       作用:

        1. MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。 在数据库做主从分离的情况下,经常选择MyISAM作为主库的存储引擎。

         2. 如果需要事务支持,并且有较高的并发读取频率(MyISAM的表锁的粒度太大,所以当该表写并发量较高时,要等待的查询就会很多了),这时选InnoDB是不错的。如果你的数据量很大(MyISAM支持压缩特性可以减少磁盘的空间占用),而且不需要支持事务时,MyISAM是最好的选择。

 

 

第二十四问:关于sql优化你如何做的?

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。    
    
    2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描.    

    3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。    
    
    4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,

如:    
select id from t where num=10 or num=20    
可以这样查询:    
select id from t where num=10    
union all    
select id from t where num=20    
    
    5.in 和 not in 也要慎用,否则会导致全表扫描,

如:    
select id from t where num in(1,2,3)    
对于连续的数值,能用 between 就不要用 in 了:    
select id from t where num between 1 and 3    
    
    
   6.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。

如:    
select id from t where num/2=100    
应改为:    
select id from t where num=100*2    
    
   7.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。

如:    
select id from t where substring(name,1,3)='abc'--name以abc开头的id    
应改为:    
select id from t where name like 'abc%'    
    
   8.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。    
      
   9.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

  10.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段

 

未完待续.....
 

安卓开发者必看:Win11最新Fastboot驱动安装避坑指南(含Android Bootloader Interface选择技巧) 本文为安卓开发者提供了Windows 11系统下Fastboot驱动安装的详细指南,特别针对Android Bootloader Interface选择技巧和多设备并发连接时的驱动冲突问题。通过解析Windows 11的特殊驱动验证机制,推荐使用Google官方USB驱动,并提供安装流程、版本选择建议及疑难问题排查方法,帮助开发者高效完成开发环境配置。 阅读详情

相关推荐

CentOS8安装NVIDIA显卡驱动、CUDA和Anaconda

CentOS8安装NVIDIA显卡驱动和CUDA 参考:CentOS nvidia+cuda+cudnn 安装 安装英伟达显卡驱动 1、检查是否安装了NVIDIA的GPU(硬件层面): lspci | grep -i nvidia 2、安装GCC、kernal组件、dkms等 sudo yum install gcc sudo yum install gcc-c++ sudo yum -y install kernel-devel sudo yum -y install kernel-headers s

智慧的旋风的博客 1万+

MySQL深入学习笔记

本文是阅读《MySQL技术内幕-InnoDB存储引擎》第二版,《MySQL DBA修炼之道》,以及《MySQL王者晋级之路》所记录的笔记. InnoDB体系架构 线程 主线程(Master Thread):将缓冲池中的数据异步刷新到磁盘. IO线程(IO Thread):处理异步IO的请求以及回调. 清理线程(Purge Thread):回收已经使用但并未分配的Undo页. 页清理线程(Pa...

Coder Liu的博客 3032

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1142

数据库 面试题

数据库的三范式是什么? 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 如何获取当前数据库版本? 说一下 ACID 是什么? MySQL 的内连接、左连接、右连接有什么区别? MySQL 索引是怎么实现的? 怎么验证 MySQL 的索引是否满足需求? 说一下数据库的事务隔离? 说一下 MySQL 常用的引擎? 说一下 My...

weixin_44138647的博客 448

从零配置EtherCAT IGH主站:手把手教你处理内核版本与实时性优化的那些坑

本文详细指导如何从零配置EtherCAT IGH主站,涵盖内核版本适配、实时性优化及常见问题解决方案。通过精确匹配内核头文件、应用实时补丁和优化网卡驱动,帮助开发者实现微秒级响应,适用于工业自动化、机器人控制等高精度场景。

weixin_30790841的博客 381

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 1998

sql语句中where后边的哪些条件会使索引失效 -- SQL语句优化

在我们编写sql的过程中where的条件使用不当会使索引(index)失效 1. 在 where 子句中使用!=或<>操作符,会使引擎放弃使用索引而进行全表扫描 2. 在 where 子句中对字段进行 null 值判断,会使引擎放弃使用索引而进行全表扫描 3. 在 where 子句中使用 or 来连接条件,会使引擎放弃使用索引而进行全表扫描 可改为: ...

aoshanshu6185的博客 4988

关于esp32蓝牙模块的使用——esp32学习笔记

关于esp32蓝牙模块的使用——esp32学习笔记 零、前言 esp32自带蓝牙模块可以让我们进行蓝牙连接并进行数据交换 一、经典蓝牙BT 首先来编写代码,经典蓝牙的使用非常简单,首先声明使用了BluetoothSerial这个库,然后使用SerialBT.begin函数设置蓝牙的名字,再然后就是设置配对码,由于这里没有用到配对码,所以我将注释掉。当配对成功我们就使用printf函数打印出蓝牙配对成功。 #include <Arduino.h> #include <BluetoothSer

qq_53965184的博客 5万+

sql语句调优

1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使

光与热的博客 895

揭秘《出塞》UE5+AIGC高效工作流 | 从创意到成片全流程解析

李季老师(老李头儿)在第四届瑞云大赛斩获季军的作品《出塞》的完整创作流程!

UWA—简单优化,优化简单! 766

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2123

互联网 Java 工程师面试题之MySQL 面试题

MySQL 面试题 1、MySQL 中有哪几种锁? 1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: 1、MyISAM 2、Heap 3、Merge 4、INNODB 5、ISAM 3、简述在

奥迪的博客 1879

ADAS方案设计-CAN网络管理与休眠唤醒机制

文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。

xiandang8023的博客 322

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

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

FindHuni的博客 1307

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

FindHuni的博客 5249

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

FindHuni的博客 934

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

FindHuni的博客 719

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

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

weixin_43213222的博客 301

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

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

FindHuni的博客 626

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思想编程kindle版电子书下载,,java初级开发工程师面试题

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

D1561691的博客 682

写给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、付费专栏及课程。

余额充值