java初级中级部分面试题

本文总结了Java编程中从基础到进阶的面试重点,涵盖HashMap实现原理、线程管理、异常处理、内存溢出、反射机制、集合框架、字符串操作、多线程与并发、IO流、数据库操作、Spring框架、MyBatis框架等方面的知识点,旨在帮助Java开发者准备面试和提升技能。
摘要由CSDN通过智能技术生成

一、java基础
1,Hashmap底层实现原理
HashMap基于hashing原理,通过put、get储存、获取对象。
当键值对传递给put方法时,它会调用键对象的hashCode方法来计算hashcode,然后找到bucket位置来储存值对象。
当获取对象时,通过键对象的equals方法找到正确的键值对,反回值对象。

2、如何终止一个正在运行的线程 
①,自然结束,当run方法完成后线程终止。
②,使用stop方法强行终止线程(不推荐)
③,使用interrupt方法中断线程

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

4、run()和start()的区别
start() 方法用于启动线程,只能调用一次。
run() 方法用于执行线程的运行时代码,可以重复调用

5、java如何会造成内存溢出
①,内存中加载的数据量太大(如一次从数据库取出过多数据)
②,集合类中有对对象的引用,使用完后未清空,使得JVM不能回收
③,代码中存在死循环,或循环产生过多重复的对象实体
④,使用的第三方软件中的BUG
⑤,启动参数内存值设定的过小

6、内存溢出的解决方案:
①,修改JVM启动参数,直接增加内存
②,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误
③,对代码进行走查和分析,找出可能发生内存溢出的位置

7、&和&&的区别
①,&和&&都是逻辑运算符号,&&又叫短路运算符
②,&不管前面条件是否正确,后面都执行。&&前面条件正确时后面才执行,不正确不执行

8、Error和Exception的区别
①,Error类和Exception类的父类都是throwable类,
②,Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等
③,Exception类表示程序可以处理的异常,可以捕获且可能恢复

7、异常捕获原理
异常发生原因: 用户输入了非法数据、要打开的文件不存在、网络通信时连接中断、JVM内存溢出

8、异常类型
语法错误、运行错误、逻辑错误

9、IO 流类型
按流向分:输入流(input)、输出流(output)
按类型分:
字节流(InputStream/OutputStream)
字符流(Reader/Writer)
节点流(低级 流:FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter)

处理流(高级流)
转换流:InputStreamReader/OutputStreamWriter
缓冲流:BufferedInputStream/BufferedOutputStream/BufferedReader/BufferedReader

10、跨域问题
跨域:指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源(域名,协议,端口)策略造成的,是浏览器施加的安全限制。
解决跨域:jsonp
dataType: ‘jsonp’,jsonp:“callback”,

11、get与post区别

  1. Get是不安全的,在传输过程,数据被放在请求的URL中。Post的所有操作对用户不可见
  2. Get传送的数据量较小,主要原因是受URL长度限制。Post传送的数据量较大,一般默认不受限制。
  3. Get执行效率却比Post方法好。Get是form提交的默认方法

12、java泛型
泛型就是在定义类、接口、方法的时候不局限地指定某一种特型,而让调用者来决定用哪一种类型的参数。

13、java反射机制
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为反射机制。

14、String str="i"与 String str=new String(“i”)区别?
String str=“i”,Java 虚拟机会将其分配到“常量池”中;
String str=new String(“i”) 会被分到“堆内存”中。

15、并行和并发有什么区别?
并行:多个处理器或多核处理器同时处理一个任务。
并发:多个任务在同一个 CPU 核上,按细分的时间片轮流执行,从逻辑上来看那些任务是同时执行。

16、线程和进程的区别?
一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程

17、什么是 java 序列化?什么情况下需要序列化?
Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。
以下情况需要使用 Java 序列化:
1),想把的内存中的对象状态保存到一个文件中或者数据库中时候;
2),想用套接字在网络上传送对象的时候;
3),想通过RMI(远程方法调用)传输对象的时候。

18、java 容器都有哪些?
两大类:
Collection :List、Set
Map :HashMap 、TreeMap、Concurr

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值