JAVA面试集锦(二)

转自https://blog.csdn.net/weixin_45673899/article/details/108277342

list和set区别

List 元素存放的顺序与插入顺序有关,可重复
Set 元素存放的顺序与插入顺序无关,元素唯一

ArrayList和Linkedlist区别

ArrayList底层是数组实现,查询元素时可以通过下标来直接获取,因此查询快时间复杂度为O1,但增删时需要移动后面所有元素的下标,因此增删慢,时间复杂度为O(n)
LinkedList底层是双向链表,查询数据时只能从头一个一个往下找,查询慢,时间复杂度为On,增删时只需要把指针直接指向下一个元素就好了,所以增删快,时间复杂度为O(1)

mvc三层架构设计思想, 为什么要用

M是model, 负责获取、处理数据,并对数据和数据库进行交互
V是view,负责提交、展示数据
C是controller,负责接收view传来的请求并调用model的业务逻辑,最后返回给view

好处
降低耦合:项目比较大的时候可以降低耦合,让每一层的代码各司其职
可移植性:当项目从B/S转为C/S或者换过来时,直接修改view层的代码就可以了

maven的作用

控制项目版本,管理依赖的jar包,只需给出jar包的引用就可以导入相关jar包,防止自己下载的jar包不正规或损坏

讲一下redis

redis是一个C语言开发的数据库,支持多种语言,与传统的关系型数据库不同的是,redis是工作在内存中,因此它的读写速度非常快(读:11万次/s,写:8万次/s),以键值对的方式来存储数据,被广泛应用于缓存方面,支持的数据类型有String、hash、list、set、zset。另外,redis还可以做分布式锁,消息队列,数据持久化(RDB,AOF)。但会有缓存穿透,缓存击穿,缓存雪崩等问题。

抽象类和接口的区别, 什么时候用抽象类什么时候用接口

抽象类可以有方法的实现,而接口只能有抽象方法
抽象类中可以有成员变量,而接口中只能有public static final修饰的成员变量
抽象类可以有静态代码块和静态方法,接口中不能有静态代码块和静态方法
抽象类可以有构造方法,接口不可以
一个类只能继承一个类,可以实现多个接口

抽象类适合用来定义某个领域的固有属性和行为,当需要为一些相似的类提供公共的属性和实现代码时,应该用抽象类来实现, 因为抽象类中的非抽象方法可以被子类继承直接使用。比如飞机是抽象类, 直升机和战斗机是子类
接口适合用来定义不同类中公有的某些行为(方法),接口与实现它的类之间不存在任何层次关系,比如飞(接口),鸟和飞机的不同实现。
总结:抽象类表示它是什么,接口表示它可以做什么

面向对象三大特性

封装:把类的属性私有化,对外提供访问数据的方法,提高数据的安全性
继承:在不用重新编写原来的类的情况下,可以直接使用父类已实现的功能,并对其进行扩展和修改
多态:同样的引用指向不同对象时调用同样的方法会有不同的结果

什么是线程安全问题

多个线程同时访问一个共享资源并有至少一个线程对其进行修改时,导致数据出现读写不一致的现象

值传递和引用传递

值传递:
java中方法参数传递方式是按值传递。
如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
引用传递
如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝,会对堆中的对象造成影响

springboot相比于spring的好处

遵循"约定大于配置"的规约,使用springboot根据默认的配置就可以搭建好开发环境,无需大量xml配置文件,利用starter和java config快速集成其他框架,嵌入式servlet服务器,直接运行jar包就可以启动项目

线程的生命周期

新建(new后)->就绪(start())->运行(抢到CPU资源)->阻塞(wait()、sleep())->死亡

算法:list集合去重

遍历list集合存到set里

有没有用过juc包下的集合类

CopyOnWriteArrayList
ConcurrentHashMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值