java基础面试题

本文详细介绍了Java面试中的关键知识点,涵盖类与对象的区别、接口、类的六种关系、Spring框架的应用和原理、内存结构、SQL优化、并发与线程、HashMap数据结构、单点登录实现、SpringMVC流程、线程同步方法、动态代理实现、JSP与Servlet的区别、SQL注入防护策略、异常处理、HTTP请求方法的区别、跨域处理、Spring的依赖注入方式、Spring MVC运行流程、MyBatis中#{ }与${ }的差异、数据库范式、多级分类、缓存问题、分布式理解、Spring Cloud组件、远程调用、负载均衡策略、Nacos与Eureka的对比、Feign调用优化、Gateway过滤器、消息队列原理与实践、Elasticsearch基础知识等,是Java开发者面试的全面指南。
摘要由CSDN通过智能技术生成

1. 类和对象的区别

类是一个独立的程序单位,他应该有个类名,它的内部包含了属性和服务两个主要部分
对象其实就是构成系统的一个基本单位 ,一个对象由一组属性和一组服务组成的
说白了,类就像一台机器,而对象就是类身上的零件

2. 接口

接口只能具有抽象方法,一个类可以实现多个接口,当类实现了接口以后就必须
实现接口中的所有的抽象方法

3. JAVA中类的六种关系

1.继承关系 2.聚合关系 3.依赖关系 4.组合关系 5.实现关系 6.关联关系

4. 为什么要用spring

基于POJO的轻量级,通过依赖注入和面向接口实现松耦合
面向切面编程(aop 不修改源代码的情况下对系统动态统一添加功能的一种技术,扩展性)

5. 为什么要有控制反转

控制反转是将组件之间的依赖关系从程序内部提到外部来管理
就是把创建对象的控制权进行转移,以前都是由自己来把控,而现在是交给第三方进行管理
就比如说转移给了IOC(Spring)容器进行管理,你要什么对象它就给你什么对象

6. 堆,栈,Hash结构

栈是后进先出的,类似于计算机的Ctrl+z撤回一样的
队列是先进先出的,类似于自助冰淇淋机的蛋筒一样的
Hash是一个KV结构字符串,key不可重复,唯一的Key对应一个自己的value

7. sql优化

1.查询SQL尽量不要使用select * ,而是具体字段
2.避免在where中使用or来连接条件
3.查询尽量避免返回大量数据
4.优化like语句
6.索引不要太多,一般5个以内
等等

8. 什么是进程,什么是线程 串行并行

电脑中会运行很多程序,每个程序有一个独立的进程,而进程之间是相互独立存在的
线程是进程中最小的执行单位,并且一个进程至少有一个线程
串行:比如说电脑要下载多个文件,串行是先开始下载A再去下载B 它们在时间上市不可
能发生叠加的。
并行:下载多个文件,开启多条线程,多个文件同时进行下载,是同一时刻发生的,并行
在时间上是叠加的

9. 线程安全

加synchronized同步锁,加Lock释放锁
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行
保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。

10. HashMap的数据结构

可以用指定Key找到指定的Value,是一个数组加链表的结构,
整体是一个数组
数组的每一个位置是一个链表
链表每个节点的Value即我们存储的Object

11. 单点登录实现

用户访问浏览器,但是你又想保护服务器中的资源,就可以限制浏览器的请求,响应
合法的请求,忽略非法的请求,浏览器每次请求服务器,服务器创建一个会话id,后面第
二次 第三次请求都会带上会话id,服务器就知道这个会话id是不是同一个用户了
登录状态:假设浏览器第一次请求需要输入账号密码。服务器拿着用户的密码去数据库对比
正确的话就是合法用户,会给这个会话标记已登录的状态

12. SpringMVC流程

用户发送请求至前端控制器
前端控制器收到请求去调用处理器映射器
处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器 返回
前端控制器调用处理器适配器
处理器适配器调用具体的后端处理器
后端控制器返回模型和视图
处理器适配器将后端控制器执行结果返回给前段控制器
前端控制器将模型和视图传给视图解析器
视图解析器解析后返回具体的视图
前端控制器根据视图进行渲染视图
前端控制器返回用户

13. sleep() 和 wait() 有什么区别?

类的不同:sleep() 来自 Thread,wait() 来自 Object。
释放锁:sleep() 不释放锁;wait() 释放锁。
用法不同:sleep() 时间到会自动恢复;wait() 可以使用 notify()/notifyAll()直接唤醒。

14. 怎么实现动态代理?

JDK 原生动态代理和 cglib 动态代理。
JDK 原生动态代理是基于接口实现的,而 cglib 是基于继承当前类的子类实现的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值