业界动态
java基础常见面试总结
2024-12-26 20:33

1.==比较的是两个对象,包括对象的地址位,如果比较的两个对象地址位不同,值相同也会返回false

2.equals比较的是两个字符串的值,只要值相同,就会返回true

不属于,是final修饰的Java类。

java中的基本数据类型:byte、char、short、int、long、float、double、boolean

String、StringBuffer、StringBuilder

String类型的字符串是不可变的,StringBuffer和StringBuilder是可以对同一个对象做更新操作的

StringBuffer是线程安全的,StringBuilder不是线程安全的

不一样。

String str="i"如果定义多个变量都为相同值的话,会共用同一个地址,创建的对象应该放在了常量池中

String str=new String("i")是创建了一个新的对象,放在的是堆内存中

 使用StringBuffer 或 StringBuilder 的 reverse 成员方法。

toCharArray("");charAt();split();ndexOf();equals();contains();length();subString("");replace("","");

接口:不能实例化,用interface修饰,可以实现多个接口

抽象类:只能单继承,使用abstract修饰,不能实例化

file.getName();file.getPath();file.delete();file.exits();file.createDirectory();file.copy();file.move();file.size();file.read();file.write();

重写:发生在子类与父类之间,重写的方法必须与被重写的方法具有相同的名称、参数列表和返回类型

重载:发生在同一个类中方法名相同,参数个数或者参数类型不同

Collection是集合的接口,其实现类有List和Set

Collections是工具类,包含许多有关集合操作的静态多态方法,可以直接使用。

List:有序,可重复

Set:无序,不可重复,HashSet无序,linkedHashSet按照插入排序,SortedSet可排序

Map:无序,key唯一,value可重复,key和值都可为null,但只能有一个

HashMap:允许Null Key和Null Value,线程不安全

HashTable:不允许Null Key和Null Value,线程安全

如果需要得到一个有序的结果应该使用TreeMap

如果不需要排序最好选用HashMap,性能更优

  1. TCP:TCP是一种面向连接的协议。在数据传输之前,需要通过三次握手建立连接,并在数据传输结束后通过四次挥手关闭连接。这种连接机制确保了数据传输的可靠性和顺序性。
  2. UDP:UDP是一种无连接的协议。发送和接收数据报文时不需要预先建立或关闭连接,因此具有较低的延迟和较高的传输效率。

HashMap基于Hash算法实现,通过put(key,value)存储,get(key)来获取value

当传入key时,HashMap会根据key,调用Hash(Object key)方法,计算出Hash值,根据Hash值将Value保存在Node对象里,Node对象保存在数组里。

当计算出的Hash值相同时,称为Hash冲突,HashMap的做法是用链表和红黑树存储相同Hash值的value;当Hash冲突的个数:小于等于8使用链表,大于8使用红黑树解决链表查询慢的问题。

HashSet是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet的操作相对比较简单,相关HashSet的操作,基本上都是直接调用底层的HashMap的相关方法来完成,HashSet不允许有重复的值,并且元素是无序的。

ArrayList:数据结构是动态数组,查询快,增删慢

linkedList:数据结构是双向链表,查询慢,增删快

List转数组:String[] list = List.toArray(array);

数组转List:List list = java.util.Arrays.asList(array);

ArrayList:有序,线程不安全,元素超过初始大小值时会扩容50%

Vector:有序,线程安全,元素超过初始大小时会翻倍扩容

Array:变量在声明时必须实例化,大小是固定,可以包含基本类型和对象类型

ArrayList:变量可以只是先声明,大小是动态变化的,只能包含对象类型

迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象。

使用方法:next();hashNext();remove();

特点:Iterator接口被Collection接口继承,Collection接口的iterator()方法返回一个iterator对象。

可以使用Collections.unmodifiableCollection(Collection c) 方法创建一个只读集合,操作集合时会抛出Java. lang. UnsupportedOperationException异常。

并行:两个或多个事件在同一时刻发生,是在不同实体上的多个事件

并发:两个或多个事件在同一时间间隔发生,是在同一个实体上的多个事件。

新建、就绪、运行、阻塞、死亡

sleep:后程序不会释放同步锁,可以指定睡眠时间,自动唤醒,类是Thread

wait:后程序会释放同步锁,可以直接用notify唤醒,类是Object

乐观锁:认为每次去拿数据的时候别人不会修改,所以不会上锁,但是每次要拿数据的时候都会先判断数据是否被别人修改。

悲观锁:认为每次去拿数据的时候别人都会修改,所以每次都会上锁。

使用场景:乐观锁使用于多读少写的应用类型,这样可以提高吞吐量;相反的情况则使用悲观锁。

序列化:对象转化为字节流的过程

反序列化:字节流转对象的过程

场景:java对象需要在网络上传输或者持久化存储到文件中,就需要对Java对象进行序列化处理

使用:类实现Serializable接口

1.校验参数的数据格式是否合法

2.对进入数据库的特殊字符进行转义处理,或编码转换

3.预编译SQL,参数化查询方式,避免SQL拼接

4.发布前利用工具进行SQL注入检测

NullPointerException、SQLException、IndexOutOfBoundException、NumberFormatException、FileNotFoundException、IOException、IllegalArgumentException、NoSuchMethodException

两次握手只能保证单向连接时是畅通的,只有经过第三次握手,才能确保双向都可以收到对方发送的数据。

get:从服务器拿数据,就是查询;请求通过URL直接请求数据,数据信息可以在URL中看到;传送的数据量小,有限制,不能大于2kb;安全性低。

post:向服务器提交数据;请求是放在请求头中的,用户看不到;传送的数据可以没有限制;相对较安全。

#{}是预编译处理,${}是字符串替换

使用#{}可以预防SQL注入

1.数组分页

2.SQL分页

3.拦截器分页

4.RowBounds分页

设置lazyLoadingEnable=true

延迟加载的原理是调用的时候触发加载,而不是在初始化的时候就加载信息。

1.跨系统的异步通信,所有需要异步交互的地方都可以使消息队列

2.多个应用之间的耦合

3.应用内的同步变异步

4.消息驱动的架构

5.跨局域网,甚至跨城市的通讯

表类型如果是MyISAM,那ID就是8

表类型如果是InnoDB,那ID就是6

float:最多可以存储8位的十进制数,在内存中占 4 字节

double:最多可以存储10的十进制数,在内存中占8字节

使用 explain 查看 SQL 是如何执行查询语句的,从而分析索引是否满足需求

缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。

解决方案:最简单粗暴的方法如果一个查询返回的数据为空(不管是数据不存在,还是系统故障,我们就把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

String、List、Hash、Set、ZSet

合理设置缓存的过期时间。

新增、更改、删除数据库操作时同步更新 Redis,可以使用事物机制来保证数据的一致性。

  • jconsole:用于对 JVM 中的内存、线程和类等进行监控
  • jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。

-Xms2g:初始化堆大小为 2g
-Xmx2g:堆最大内存为 2g
-XX:NewRatio=4:设置年轻代和老年代的内存比例为 1:4
-XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2
–XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器组合
-XX:+UseParallelOldGC:指定使用 ParNew + ParNew Old 垃圾回收器组合
-XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old 垃圾回收器组合
-XX:+PrintGC:开启打印 gc 信息
-XX:+PrintGCDetails:打印 gc 详细信息。

    以上就是本篇文章【java基础常见面试总结】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10431.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
1月22日行业要闻早餐
国际 动 态1、商务部征求对澳大利亚贸易政策审议关注和评论根据世贸组织贸易政策审议机构工作安排,世贸组织对澳大利亚第九次贸
西安油价最新调整(1月16日24时)
点击↑上方蓝字在菜单栏戳【微信办事】【今日特惠】【春节|灯会】获取你想看的内容各位准备加油的车主注意啦新一轮油价调整已经
确认了!今晚涨价!
  国家发改委刚刚发布!  根据近期国际市场油价变化情况  按照现行成品油价格形成机制  自2025年1月2日24时起  国内汽
今晚24时,油价上调!附长春最新油价
新一轮油价调整又来了!今晚24时,油价上调!长春最新油价公布一起来了解下2025年1月2日国内成品油价格按机制调整根据近期国际市
阳江华涛不锈钢管
10月10日,丽水市生态环境局松分局受理受理关于浙江科艺特种管业年产230万米超洁净、80万件超洁净件新材料项目环评文件并对外进
金价涨了
  周二,美国总统特朗普就职首日发表的贸易言论以及采取的行动,比市场最初预期的要温和,可以说是让华尔街“松了一口气”,美
玉溪奔驰GLE年末降价狂欢!优惠16万,今日钜惠
【汽车之家玉溪优惠促销频道】目前正在进行优惠促销活动,玉溪地区的消费者可以享受到高达16万元的优惠。当前,奔驰GLE的最低起
圆钢棒料价格表
14日:无锡新安后严桥中富达码头大量收购(另大量收购含税带票废钢,企业招标废钢):【毛料】1:钢筋头毛料:2250(利用钢筋;大
湖北青山油价
2025-01-23 星期四,国家发展改革发布油价指导信息结合湖北青山区(qingshan)实际情况,青山今日92油价为每升0.00元,95号汽油售价
陆家嘴财经早餐2025年1月23日星期四
//  热点聚焦  //1、中央金融办、证监会等六部门联合印发推动中长期资金入市实施方案,重点引导商业保险资金、全国社会保障资