当前位置: 首页 > news >正文

【面试专线】【基础知识】【JAVA】基础(三)(简答版)

java基础(一)https://juejin.cn/post/7084216461597605901
java基础(二)https://juejin.cn/post/7133274653857939470
java基础(三)(简答版)https://juejin.cn/post/7137521923663069191

Java基础(三)(简答版)

一、Java【1~8】

1. Java是否支持多继承?

答: 接口支持,类不支持。

2. List都有哪些?

答: 常用的有ArrayList、LinkedList、Vector等。

3. ArrayList默认大小是多少,它又如何扩容?

答: JDK1.7前的默认大小是10,之后的是0;每次扩容约1.5倍。

4. ArrayList和LinkedList的底层数据结构是什么

答: 前者是数组结构;后者是链表结构。
(另外,Vector和ArrayList的区别是,前者V是线程安全的;后者A是线程不安全的。)

5. String是基础类型吗?String是可变的吗?

答: 不是,是引用类型;不可变。

6. final关键字的含义

答: 定义常量,之后不可修改。(定义方法:不能被重写;定义类:不能被继承;定义变量:不能再次赋值)

7. 是否熟悉HashMap?它能做什么?底层原理和扩容机制又是怎么样的?

答: 熟悉;

  • 能键值对的映射(key-value) 比如,小明是一个学生,家住南方,key是小明;value记录小明的信息:学生、家住南方。
  • 底层原理:数组 + 链表(一个数组结构,数组中每一项又是一个链表)
  • 扩容机制:当数组容量达到75%时,会创建一个原来大小两倍的数组。

8. 传统HashMap的缺点(就是JDK1.8之前的HashMap,也是为什么引入红黑树的原因)

答: 过长的链表查询会消耗时间过长,为了解决链表可能出现过长的情况,引入了红黑树。(树化阈值为8是比较理想;树节点小于等于6时,会退化成链表)

9. HashMap和HashTable的区别

答: HashTable 比 HashMap 多个 Synchronized,即 HashTable是线程安全的;HashMap是线程不安全的,HashMap也比HashTable更快;HashMap可以接受null的键和值,HashTable则不能(equlas()方法需要对象,因为HashMap是后出的API经过处理才可以)。

二、Spring【1~4】

1. Spring有几种配置方式

答: 三种;注解配置、XML配置、Java Config配置(相当于spring的配置文件XML;@Bean 和 @Configuration)

2. Spring常见的注解有哪些?

答: @Controller(表现层的注解)、@Service(业务层的注解)、@Repository(持久层的注解)、@Autowired(作用:自动注入bean)、@Value(注入基本类型和String类型的数据)、@Configuration(指定 Spring 配置类)、@Transactional(定义事务)、@RestController(@Controller和@ResponseBody的结合)、@RequestMapping(映射web请求,就是完整url中跟的部分)

3. 一些重要的 Spring 模块

答: 七大模块;

  • Spring AOP(面相切面编程)
  • Spring ORM(对象关系映射;Hibernate、Mybatis、JDO)
  • Spring Core(基础和核心部分;bean工厂、控制反转IOC和依赖注入)
  • Spring Dao(提供了JDBC的抽象层)
  • Spring Context(应用程序上下文;依赖于Spring Core)
  • Spring Web(提供了web的一些工具类的支持,如多方文件上传)
  • Spring MVC(Web应用的Model-View-Controller(MVC)实现)

4. 谈谈对 Spring IOC 的了解

答: IOC全程(Inversion Of Control)直译过来是控制反转;控制反转是把传统上由程序代码直接操控对象(new对象)的调用权交给ioc容器,由容器来实现对象的创建,依赖,销毁,初始化等等。

三、SpringBoot【1~6】

1. 为什么要使用SpringBoot?(用SpringBoot的好处)

答: 内嵌Tomcat;不需要XML配置(可以用Java Config);无须部署WAR文件;高效配置,快速开发。

2. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

答: @SpringBootApplication(开启 Spring Boot 的各项能力)、@EnableAutoConfiguration(允许自动配置注解)、@Configuration(指定 Spring 配置类)、@ComponentScan(开启组件扫描)

3. 持续更新中。。。

答:

4. 说说Shiro的认证和授权(Shiro的认识)

答: 作用:能完成认证、授权、加密、会话管理、与Web集成、缓存等操作。

  • 用户认证:用户身份识别(即登录)
  • 用户授权:访问控制
  • 密码加密:加密数据(防偷窥)
  • 会话管理:用户访问应用时保持的连接关系
    Subject(主体)、SecurityManager(Shiro心脏,功能交互都通过它)、Realm(携带认证和授权的数据)、Cryptography(数据加密解密模块)、CacheManager(缓存控制器)、Session(生命周期在SessionManager)、SessionManager(会话管理)、SessionDAO(回话crud,存储会话到Redis或ehcache的增删改查)

5. 设计模式的了解情况

答: 六大原则:① 开闭原则(Open Close Principle)里氏代换原则(Liskov Substitution Principle)依赖倒转原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)迪米特法则(最少知道原则)(Demeter Principle)合成复用原则(Composite Reuse Principle)

  • 创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  • 结构型模式(7种):代理模式、桥接模式、适配器模式、装饰器模式、外观模式、享元模式、组合模式。
  • 行为型模式(11种):观察者模式、策略模式、模板方法模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

6. SpringBoot 和 SpringCloud 分别是什么?说说它们的区别

答: SpringBoot 是提供一个默认配置,从而简化配置过程的轻量级 Spring;SpringCloud是为了给微服务的一个综合管理框架。 SpringBoot单独可以使用,SpringCloud必须要SpringBoot使用的前提下才能使用。它俩出现都是为了简化开发,但是又是完全不同的两个软件开发框架(一个简化配置文件;一个管理微服务)。

7. 持续更新中。。。

答:

最后

感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)

相关文章:

  • Java项目:SSM律师事务所律师管理系统
  • 《MongoDB入门教程》第11篇 数组运算符
  • java Python+Django的大学生提问论坛系统-在线答疑系统
  • Vue学习第18天——Vue中的过度与动画效果的使用与案例
  • 设计模式 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则
  • Codeforces Round #816 (Div. 2)补题(A-E)
  • 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第二批)
  • 【Android应用与开发】DAY1-安装Android Studio报错整合及学习
  • Mybatis实战练习六【批量删除Mybatis参数传递】
  • 小白量化《穿云箭集群量化》(1)小白草根超级量化软件介绍
  • C语言指针操作(七)*指针数组和多重指针
  • 【python经验总结】我与bug的那些日子
  • <栈和队列及模拟实现>——《Data Structure in C Train》
  • 猿创征文|【Typescript】搭建TS的编译环境
  • 【项目管理】beautyeye
  • python3.6+scrapy+mysql 爬虫实战
  •  D - 粉碎叛乱F - 其他起义
  • ESLint简单操作
  • FineReport中如何实现自动滚屏效果
  • iOS 颜色设置看我就够了
  • Java|序列化异常StreamCorruptedException的解决方法
  • javascript 总结(常用工具类的封装)
  • Java反射-动态类加载和重新加载
  • jQuery(一)
  • Js基础——数据类型之Null和Undefined
  • MaxCompute访问TableStore(OTS) 数据
  • opencv python Meanshift 和 Camshift
  • SwizzleMethod 黑魔法
  • Tornado学习笔记(1)
  • 基于web的全景—— Pannellum小试
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 使用common-codec进行md5加密
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一起参Ember.js讨论、问答社区。
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #android不同版本废弃api,新api。
  • #控制台大学课堂点名问题_课堂随机点名
  • (13):Silverlight 2 数据与通信之WebRequest
  • (9)STL算法之逆转旋转
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)Google Chrome调试JS
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net refrector
  • .net 后台导出excel ,word
  • .net 无限分类
  • .NET分布式缓存Memcached从入门到实战
  • .Net组件程序设计之线程、并发管理(一)
  • @RequestParam详解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [2544]最短路 (两种算法)(HDU)