2022java面试2

聊一聊ioc和aop

IoC(Inverse of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。不过, IoC 并非 Spring 特有,在其他语言中也有应用。

  • 为什么叫控制反转?
    控制 :指的是对象创建(实例化、管理)的权力
    反转 :控制权交给外部环境(Spring 框架、IoC 容器)
    例如:现有类 A 依赖于类 B
    传统的开发方式 :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来
    使用 IoC 思想的开发方式 :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面过去即可。
    将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。 IoC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
  • IoC 解决了什么问题
    IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?
    • 对象之间的耦合度或者说依赖程度降低;
    • 资源变的容易管理;比如你用 Spring 容器提供的话很容易就可以实现一个单例。

IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。

什么是 AOP
AOP:Aspect oriented programming 面向切面编程,AOP 是 OOP(面向对象编程)的一种延续。

  • AOP面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

  • Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么 Spring AOP 会使用 JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候 Spring AOP 会使用 Cglib 生成一个被代理对象的子类来作为代理。

  • 代理模式的使用总结

  • Spring AOP中的JDK和CGLib动态代理哪个效率更高?

java有哪些容器

Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue。

Java 集合框架如下图所示:
在这里插入图片描述
总结点
分别从以下点进行对比
1.有无顺序
2.元素是否可重复
3.可存放元素数量
4.底层实现
5.线程安全性
6.通常用来做什么
7.优点,特性
8.线程安全框架包
9.在现有哪些框架上用到了这些集合

聊一聊io流

按照流的流向分,可以分为输入流和输出流;
按照操作单元划分,可以划分为字节流和字符流;
按照流的角色划分为节点流和处理流。
【Java基础-3】吃透Java IO:字节流、字符流、缓冲流

redis内存优化

Redis在设置缓存数据时指定了过期时间,到了过期时间数据就失效了,那Redis是怎么处理这些失效的数据的呢?这就用到了Redis的过期策略——“定期删除+惰性删除” 。
Redis的过期策略以及内存淘汰机制

说一说Java虚拟机

jvm可以去看b站狂神说的视频,再结合优质博客理解
如何啃下JVM这座大山,完结撒花!

多线程创建

创建多线程的四种方式

mybatis关联查询标签

MyBatis 关联查询(一对多 & 多对一)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 2022Java面试题包括了Java基础知识、面向对象编程、Java集合框架、多线程、IO流、网络编程、JVM虚拟机、JavaWeb、Spring框架等等。其中,Java基础知识是最为基础的一部分,需要掌握Java语言特性、面向对象思想、常用数据类型、数据类型转换、运算符、流程控制语句、方法等知识。面向对象编程方面需要掌握继承、封装、多态、抽象类、接口等知识,还需要熟悉类、对象的创建和使用。在Java集合框架方面,需掌握集合接口、集合类及其方法、迭代器、泛型等知识。多线程方面包括线程的创建、线程的运行、线程的同步与死锁等。IO流方面需要了解文件的读取、输出、输入流、文件的写入等相关知识。网络编程方面,需要熟悉TCP/IP协议、UDP协议、Socket编程等;JVM虚拟机方面,需理解虚拟机的内存模型、GC算法、类文件结构等。在JavaWeb方面,需熟悉Servlet与JSP、Web框架、常用的数据库连接池等;Spring框架方面,需要了解SpringIOC、AOP等核心概念,以及SpringMVC、SpringBoot等集成框架的使用。综上所述,掌握Java编程语言的基础知识和相关技能对于在未来的Java编程领域内拥有良好的竞争力是必要的。 ### 回答2: 首先,需要了解Java语言的基础知识,包括数据类型、运算符、流程控制语句等等。还需要熟练掌握面向对象编程的概念和技术,比如封装、继承、多态以及接口等。同时,需要了解Java中的异常处理、线程和并发、集合框架等高级特性。 面试中可能会被问到Java中的垃圾回收机制,需要了解Java虚拟机中的垃圾回收算法和各种垃圾回收器的特点和使用方法。还有关于Java中的类加载机制和Java虚拟机的JVM调优等问题,需要做足功课以进行应对。 此外,在企业级项目中,常用的开发框架如Spring和Hibernate等都需要熟练掌握,包括框架的原理和使用方法。还需要掌握相关技术栈,如RESTful API、SSH、Struts2等技术。 在面试中还可能会出现一些算法和数据结构的问题,需要熟练掌握基本数据结构和算法,并能在实际问题中运用它们解决问题。 除了技术方面,还需要对自己的项目经验和技术方向有清晰的认识和规划,以及良好的沟通能力、团队合作精神和解决问题的能力,在面试中展现出自己的优势和价值。 总之,在面试中应该全面准备,提前了解面试过程和大厂面试经验,结合自己的实际情况和实际项目经验,全面展现自己的技术能力和个人价值,赢得面试官的青睐。 ### 回答3: 2022java面试Java开发工程师是目前市场上最受欢迎的岗位之一。无论是初级还是高级Java工程师,一般都需要通过一系列的面试来获得自己理想的职位。在2022年,Java面试难度可能会更高,这是因为Java技术在各行各业的应用越来越广泛。如果您想在这个行业有进一步的发展,那么您需要加强您的技能和准备好可能会出现的Java面试题。 下面是2022Java面试题的一些简介 1. 介绍Java中的四个访问修饰符。 2. 讲解什么是Java中的hashCode()和equals()方法。 3. 讲解Java中的线程安全性问题,以及如何解决它。 4. 介绍Java中的异常和错误,并解释它们的区别。 5. 讲解Java中接口和抽象类的区别。 6. 讲解Java中的反射机制,以及它的应用场景。 7. 介绍Java中的集合框架,并讲解每个集合的使用场景。 8. 讲解Java中的泛型,并给出一个在代码中使用它的例子。 9. 讲解Java中的多态性,并解释其优点。 10. 介绍Java中常用的设计模式,并针对每一个设计模式说明适用的场景。 除了这些具体的面试题,面试官也可能会根据公司的需要,在更深入的技术方面提出问题,例如分布式技术,数据库等。所以不管您是面试初级Java工程师还是高级Java工程师,您都应该对Java的原理、常见问题和应用方式有足够的了解。不断学习、掌握新知识和提高自己解决实际问题的能力,这是成为Java开发工程师的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值