6年java开发面试题

背景:回合肥了,最近一直在面试,整理一下遇到的面试题(主要是没答上来的,或者觉得不太满意的)

1.你知道类怎么加载的吗?

 我的回答:不太了解,印象中编译的时候将Java文件转成class文件,启动的时候类加载器将对应的数据加载到jvm中

百度:当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化。

1. 加载:是将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。

2. 连接
(1)验证是否有正确的内部结构,并和其他类协调一致。
(2)准备负责为类的静态成员分配内存,并设置默认初始化值。
(3)解析将类的二进制数据中的符号引用替换为直接。
3. 初始化:就是我们以前讲过的初始化步骤。

2.mybaties 特殊字符怎么处理?

 我的回答:转义,&lt;之类的,又问其他方法没答出来,<![CDATA[]]>

3.内存溢出怎么排查的?

我的回答:找客户了解具体情况,查看日志,确定具体操作了哪些内容溢出的,面试官打断并问不知道具体什么原因导致的,我回答这种使用jdk自带的jconsole和jvisualvm工具,分析具体哪一个类占用大量资源,并分析对应类的使用情况,面试官问Linux环境怎么使用jconsole工具,回答可以设置远程连接的

4.springboot主服务上的注解有哪些?

@SpringBootApplication,@Configuration,@EnableAutoConfiguration,@ComponentScan  (一个都没想起来)

5.Java什么是面向接口编程?

 我的回答,将方法抽象出来,具体实现不对外暴露,使用者只关注具体结果,面试官说这是封装,不是面向接口编程,

百度:面向接口编程是一种编程规范和设计规范,它强调通过接口来定义和实现系统组件之间的交互。这种编程方式的核心思想是将系统的具体实现与接口定义分离,通过接口来规定组件之间的通信协议和行为规范。面向接口编程旨在降低程序各部分之间的耦合性,提高系统的可扩展性和可维护性。

面向接口编程的实现通常包括以下几个关键点:

  1. 接口定义:首先,根据系统的需求和设计,定义一组接口。这些接口描述了系统组件应该提供的功能和服务的抽象规范。
  2. 实现类:然后,为这些接口提供具体的实现类。这些实现类包含了实现接口定义所需的具体逻辑和代码。
  3. 解耦:通过面向接口编程,可以实现系统的高内聚低耦合。这意味着系统的各个部分可以通过接口进行交互,而不需要直接依赖彼此的具体实现,从而减少了代码之间的直接耦合。
  4. 扩展和维护:当系统需求发生变化时,只需要为新的需求编写相应的实现类,而不需要修改现有的代码。这种设计使得系统的扩展和维护变得更加容易。
  5. 设计原则:面向接口编程遵循开闭原则,即对扩展开放,对修改关闭。这意味着系统应该能够容易地添加新的功能或服务,而不需要修改已有的代码。

面向接口编程的好处包括:

  • 降低耦合性:通过接口定义和实现分离,减少了系统各部分之间的直接依赖,降低了耦合性。
  • 易于扩展和维护:当需求变化时,只需要添加新的实现类,而不需要修改现有代码,提高了系统的可扩展性和可维护性。
  • 遵循设计原则:遵循开闭原则,使得系统能够更容易地适应变化和扩展新功能

6.微服务中一个完整的请求链路是什么样的

我的回答:前端发一个请求到控制层,控制层调用服务层,服务层调用mapper,mapper再调用对应的SQL,最后再一层层返回给前端.

百度:客户端发起请求,网关解析请求发给具体某个微服务,服务间可能涉及到多个微服务调用,每个微服务完成请求后给调用者结果,聚合服务收集这些响应,整体发送给客户端,客户端接收到响应后根据具体情况处理

7.spring事务失效的可能有哪些

我的回答:spring是用容器管理对象的,没有用容器管理对象,或者没有从容器中获取对象而是直接new的,还有抛出异常好try catch了,又或者@transactional注解配置不对

百度:事务方法不是public,对象内部方法自调用事务方法,异常处理不当,数据源或事务管理器配置错误,事务传播行为不当,处理方式不正确,事务同步问题

8.鉴权怎么处理的?

我的回答:我们权限有很多,首先服务启动的时候我们会根据客户信息将对应的菜单加载上去,然后客户可以设置用户的权限(菜单权限,基金权限,项目权限),用户登录后访问具体某个接口,我们会先判断该接口是公用接口还是菜单接口,菜单接口会去判断用户有没有该菜单权限,有的话才可以访问,项目权限,基金权限是用来对具体展示的数据做业务过滤的

9.springboot你觉得最核心的是哪一个jar包

我的回答:不知道

百度:spring-boot-starter

10.SQL优化怎么优化的

我的回答:先开启慢SQL日志,分析具体有哪些SQL比较慢,explain查看一下是否有索引以及是否使用了索引,让其使用上索引,比较复杂的SQL考虑代码层面进行优化,

11.in和exists的区别

我的回答:两个差不多吧,in的话数据量大会有问题,超过1000个oracle会报错,

百度:

  1. 应用场景
  • IN适用于子查询结果集较小,而外部查询的表较大且又有索引的情况。
  • EXISTS适用于外部查询的记录较少,而子查询中的表较大且有索引的情况。
  1. 驱动顺序与底层原理
  • IN是先查询子查询的表,然后将内外表做笛卡尔积,再根据条件筛选。它实际上是把外表和内表做hash连接。
  • EXISTS是以外层表为驱动表,先被访问,然后对内表进行查询。它是对外表做loop循环,每次loop循环再对内表进行查询。
  1. 对NULL值的处理
  • 有观点认为IN不对NULL进行处理,而EXISTS会对NULL值进行处理,但这一区别在实际测试中可能并不明显。
  1. 效率考虑
  • 当外表较大,子查询内表结果较小的时候,使用IN的效率可能会更高,因为IN可以使用外表的索引。
  • 当外表较小,而子查询内表结果较大,且子查询可以使用索引的时候,使用EXISTS效率可能会更高,因为EXISTS可以使用内表的索引。
  • 如果内外表查询结果集相差不大,两者效率可能相当,具体取决于所使用的索引和查询优化器的选择。
  1. 适用性
  • IN可以单独使用,如IN(a,b,c...),而EXISTS通常与子查询一起使用。
  • IN通常用于非关联子查询,而EXISTS通常用于关联子查询。

12.设计模式用过哪些?

我的回答:23种设计模式吗?用的比较多的建造者模式,单例模式,工厂模式,面试官先后问了建造者模式怎么使用的,单例模式有哪种,工厂模式抽象工程是什么样的,建造者模式我们是有不同客户需求同一个合同需要的参数是不一样的,用建造者模式可以方便维护,就是set后返回整个对象,方便链式使用,单例模式有饱汉饿汉,一个启动的时候创建对象,一个使用的时候才创建,抽象工厂模式没答上来

百度:工厂模式可以分为三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式由一个工厂类根据传入的参数动态决定创建哪一个产品类的实例。工厂方法模式则定义了一个创建对象的接口,由子类决定实例化哪一个类。抽象工厂模式则更为复杂,它允许生产一系列相关或独立的产品,而不需要关心具体产品的创建过程。

13.Java怎么调用存储过程?

我的回答:不记得了

百度:@Select("CALL your_procedure_name(#{param1, mode=IN, jdbcType=INTEGER}, #{param2, mode=OUT, jdbcType=VARCHAR})")

或者

<select id="callYourProcedure" statementType="CALLABLE">

{CALL your_procedure_name(#{param1, mode=IN, jdbcType=INTEGER}, #{param2, mode=OUT, jdbcType=VARCHAR})}

</select>

14.你对spring,springboot,springcloud的理解

我的回答:spring是大的框架,springboot基于约定大于配置,省略了一些配置项,springcloud是一个轻量级微服务框架

百度: Spring 是一个开源应用框架,它解决了开发人员在进行企业级开发时常遇到的一些常见问题。它主要提供了IoC(控制反转)和AOP(面向切面编程)。Spring 的核心是 Spring Core,它提供了依赖注入(DI)特性。

Spring Boot 是 Spring 的一个子项目,它的目标是简化 Spring 应用的初始搭建以及开发过程。它提供了一种快速开发、运行和部署生产级应用的方法。Spring Boot 会以默认配置开启各种功能,这些设置都是针对大多数应用的。

Spring Cloud 是一系列工具,它提供了微服务架构中常见的模式实现,如服务发现注册、配置管理、智能路由、负载均衡等。Spring Cloud 构建于 Spring Boot 之上,使得开发者可以快速的搭建一套完整的微服务系统。

Spring, Spring Boot 和 Spring Cloud 的关系:Spring Boot 专注于快速启动、开箱即用,而 Spring Cloud 关注分布式系统中的服务发现、配置管理、负载均衡、断路器等问题。Spring Cloud 构建于 Spring Boot 之上,Spring Boot 对 Spring 进行了简化和简单化的封装,使开发者能够快速上手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制&#xff09; -A 20 &#xff08;显示20行&#xff09; 根据代码显示进行错误排查

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

娱乐圈惊爆已婚男星刘端端深夜幽会

【娱乐圈惊爆&#xff01;已婚男星刘端端深夜幽会&#xff0c;竟是《庆余年》二皇子“戏外风云”】在这个信息爆炸的时代&#xff0c;娱乐圈的每一次风吹草动都能瞬间点燃公众的热情。今日&#xff0c;知名娱乐博主刘大锤的一则预告如同投入湖中的巨石&#xff0c;激起了层层涟…

关于下载obsidian SimpRead Sync中报错的问题

参考Kenshin的配置方法&#xff0c;我却在输入简悦的配置文件目录时多次报错。 bug如下&#xff1a; 我发现导出来的配置文件格式如下&#xff1a; 然后根据报错的bug对此文件名进行修改&#xff0c;如下&#xff1a; 解决。

Java数据结构-树的面试题

目录 一.谈谈树的种类 二.红黑树如何实现 三.二叉树的题目 1.求一个二叉树的高度&#xff0c;有两种方法。 2.寻找二叉搜索树当中第K大的值 3、查找与根节点距离K的节点 4.二叉树两个结点的公共最近公共祖先 本专栏全是博主自己收集的面试题&#xff0c;仅可参考&#xf…

暑假前端知识速成【CSS】系列一

坚持就是希望&#xff01; 什么是CSS? CSS 指的是层叠样式表* (Cascading Style Sheets)CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素CSS 节省了大量工作。它可以同时控制多张网页的布局外部样式表存储在 CSS 文件中 *&#xff1a;也称级联样式表。 CSS语法 在此例…

微信小程序的智慧物流平台-计算机毕业设计源码49796

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方法 1.4开发技术 1.4.1 微信开发者工具 1.4.2 Node.JS框架 1.4.3 MySQL数据库 1.5论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分…

Windows 上帝模式是什么?开启之后有什么用处?

Windows 上帝模式是什么 什么是上帝模式&#xff1f;Windows 上帝模式&#xff08;God Mode&#xff09;是一个隐藏的文件夹&#xff0c;通过启用它&#xff0c;用户可以在一个界面中访问操作系统的所有管理工具和设置选项。这个功能最早出现在 Windows Vista 中&#xff0c;并…

【K8s】专题六(4):Kubernetes 稳定性之初始化容器

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、主要特点 三、资源清单&#xff08;示例&#xff09; 一、基本介绍 初…

小学英语语法

目录 a和an的用法名词的单复数be动词和人称代词&#xff08;主格&#xff09;指示代词形容词物主代词名词所有格双重所有格方位介词some&#xff0c;any和no的用法How many和How much的用法情态动词can的用法祈使句人称代词&#xff08;宾格&#xff09;常见实义动词的用法一般…

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…

深入理解 Webhook 与 API 的区别

作为人类&#xff0c;我们希望技术能帮助我们更快捷、更便捷地与更多人交流。但要实现这一目标&#xff0c;我们首先需要找到一种方法让技术能够彼此对话。 这就是 API 和 Webhook 的用武之地。 API 和 Webhook 都能够促进两个应用之间的数据同步和传递。然而&#xff0c;它们…

MySQL视图教程(03):列出视图

文章目录 MySQL 列出视图语法使用场景示例结论 MySQL 列出视图 MySQL 是一种流行的关系型数据库管理系统&#xff0c;用于创建和管理数据库中的表、视图等对象。在 MySQL 中&#xff0c;视图是一种虚拟表&#xff0c;可以从一个或多个实际表中检索数据&#xff0c;并根据特定的…

springboot整合Camunda实现业务

1.bean实现 业务 1.画流程图 系统任务&#xff0c;实现方式 2.定义bean package com.jmj.camunda7test.process.config;import lombok.extern.slf4j.Slf4j; import org.camunda.bpm.engine.TaskService; import org.camunda.bpm.engine.delegate.JavaDelegate; import org.…

【一】m2芯片的mac中安装ubuntu24虚拟机集群

文章目录 1. 虚拟机配置2. 复制虚拟机2.1 修改主机名2.2 修改网络 1. 虚拟机配置 在官方网站下载好ubuntu24-arm版镜像开始安装&#xff0c;安装使用VMWare Fusion的社区免费授权版,使用一台m2芯片的mac电脑作为物理机平台。 为什么选择ubuntu24&#xff1f;因为centOS7目前已…

php简单商城小程序系统源码

&#x1f6cd;️【简单商城小程序】&#x1f6cd;️ &#x1f680;一键开启&#xff0c;商城搭建新体验&#x1f680; 你还在为繁琐的商城搭建流程头疼吗&#xff1f;现在&#xff0c;有了简单商城系统小程序&#xff0c;一切变得轻松又快捷&#xff01;无需复杂的编程知识&a…

CTF常用sql注入(三)无列名注入

0x06 无列名 适用于无法正确的查出结果&#xff0c;比如把information_schema给过滤了 join 联合 select * from users;select 1,2,3 union select * from users;列名被替换成了1,2,3&#xff0c; 我们再利用子查询和别名查 select 2 from (select 1,2,3 union select * f…

为什么使用StartAI文生图进行AI绘画?

什么是文生图&#xff1f; 文生图是AIGC中一种先进的图像生成技术&#xff0c;它能够根据用户输入的文字描述&#xff0c;智能地生成相应的图像。无论是抽象的概念&#xff0c;还是具体的物体&#xff0c;文生图都能够以惊人的准确性和艺术性呈现出来。 StartAI文生图如何进行…

南方航空阿里v2滑块验证码逆向分析思路学习

目录 一、声明&#xff01; 二、介绍 三、请求流程分析&#xff1a; 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提交验证 ​编辑 四、接口响应数据分析&#xff1a; 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明&#xff0c;有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向