Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

Java 面试题整理 PDF 下载


分享到:
时间:2020-09-24 10:35来源:http://www.java1234.com 作者:转载  侵权举报
Java 面试题整理 PDF 下载
失效链接处理
Java 面试题整理 PDF 下载


本站整理下载:
 
相关截图:
 
主要内容:


1.谈谈你对Java和C的理解?
Java:
面向对象、Unicode:可以跨平台(JVM运行),可以分布式,相对C速度会慢
C语言: 
面向过程、ASCII、更底层:移植性、安全性不如Java、没有GC
特点:速度快(Linux、Nginx)、注重算法
变量可以不进行初始化
2.super与this区别
this指当前类的对象
super父类对象,受继承的约束规则
(例:子类构造函数中默认存在super,当父类没有无参构造函数或者被私有化,则变异报错,必须手动添加父类无参构造(默认缺省))
3.public:全局
protected:子类,同包,类内
默认什么都不:写同一包、类内
Privat:类内
4.java事件委托机制
一个源产生一个事件并把它发送到一个或多个监听器哪里,事件被监听器接受后进行处理
5.垃圾回收机制
将分配给对象但不在使用的内存回收或释放的过程。(比如当一个对象没有指向它的引用或者为null值)
6.什么是java序列化
将一个对象保存到一个文件,并且可以通过流的方式进行传输。实现Serializable接口
7.一个.java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以、但是只允许有一个public类,并且类名必须和文件名一致。
8.Override和Overload的区别
Override是重写,子类覆盖父类方法
Overload是重载,一个类多个方法,方法名相同,参数不同
9.Final类特点
属性常量
方法不可被重写
类不可以被继承
10.一般的排序方式
选择排序思路:外层从数组i(0)位开始,内层从j=i开始,i++j++遍历整个数组,找到最小值位j,ij通过中间值m换位 i++
For(int i=0;i<a.length;i++){ int m = I;
For(int j=I;j<a.length;j++){
If(a[j]<a[m]){m=j}
}
Int c=a[i];
a[i]=a[m];
a[m]=c;
}
插入排序思路:认为i[0]是有序的,外层从i[1]开始,内层从j=i-1开始,i++j--遍历,相邻的两个元素小大排,每遍历完一个次,i++
For(int i=1;i<a.length;i++){
for(int j=i-1;j>=0;j--){
If(a[j]>a[j+1]){
Int c=a[j]
a[j]=a[j+1]
a[j+1]=c
}else{break}
}
}
冒泡排序思路:外层从i(0)开始 内层j从末尾开始,i++j-遍历整个数组,相邻的两个元素小大排,每遍历完一个次,i++,可以加一个boolean判断,减少运算
For(int i=1;i<a.length;i++){
boolean flag = false; 
For(j=a.length-1;j>I;j--){
If(a[j]<a[j-1])
Int c=a[j]
a[j]=a[j-1]
a[j-1]=c
flag=true;
}
If(!flag){break;}
}
11.抽象类和接口的区别
接口可以被多实现,抽象类只能被单一继承
接口只有方法定义,抽象类可以有方法定义和实现
接口的字段定义是public static final的,抽象类是本包可见
12.什么是类的反射机制
通过类(Class 对象),可以得出当前类的:fields、method、construtor、annotation等,并且进一步的可以实现:实例化类、设置属性、唤醒方法。
典型应用在Spring框架中。
如何唤醒一个类的方法:1得到类对象2得到该方法+参数3method.invoke(实例,参数)唤醒
13.Java获得年月日
Calendar c=Calendar.getInstance(); 
c.set(Calendar.YEAR,2004); 
c.set(Calendar.MONTH,0); 
c.set(Calendar.DAY_OF_MONTH,31); 
System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+""+c.get(Calendar.DAY_OF_MONTH));
Java获取毫秒数
Date d = new Date();
Long l = d.getTime();
14.Java简单实现编码转换
String a = new String(“都是靠技术”.getBytes(“charset”),”charset”);
15.简单介绍一下Java内存溢出、内存泄漏
内存溢出 out of memory 内存满了。死循环输出或大量数据库读取或JVM内存过小 死循环append字符串
内存泄漏 memory leak 无用对象持续占内存。.close()方法丢失
16.Java多态实现
静态实现:OverLoad
动态实现:继承+实现
17.简述Java垃圾回收机制
动态内存:类实例
静态内存:类本身
垃圾收集主要针对的是动态内存,一般当内存不够用时会进行垃圾收集。
可以通过System.gc()手动回收,但是不一定执行。
18.谈谈Java的JVM内存机制?/谈谈Java 堆、栈、方法区都是干什么的?
堆: 只存放对象本身
栈: 只存放基本类型和对象的引用 Stack.push Stack.pop
方法区:又叫静态区,包含所有的class类、static变量、常量池(类常量和字符串常量1.7以后字符串常量池放到了堆中数字常量池(-128-127))。特点唯一
19.简述类加载过程?描述一下JVM加载Class文件的原理机制?
JVM中类的加载是由ClassLoader和他的子类来实现的,类加载器在JVM虚拟机中
加载(.class二进制文件加载到内存)-连接(验证编译合法、分配内存赋给默认值、方法的符号引用变为直接引用)-初始化(赋值)
20.谈谈JVM的优化?
21.Java如何处理异常?
Try-catch-finally
Throws 方法或类抛出异常
Throw 代码块抛出异常 throw new ServiceException(“”);
22.谈谈对tring StringBuffer StringBuilder的理解?
String 长度不可变 +号拼接慢
StringBuffer 拼接字符串 特点:快、线程安全
StringBuilder 拼接字符串 特点:非常快、线程不安全
23.集合的作用是什么?谈谈List、Set、Map。(注意Map跟List,Set不同隶属于Collection)
集合的一大特点是泛型、存放不同类型
List 有序的可重复 ArraysList数组储存,任意位置访问效率高, LinkedList链表储存,两端效率高
Set 无序的不重复 区分重复的方法:先比较hashcode 在equals 都相等则相等
Map 键值对存储 一个哈希桶key对应一个或者多个值value key相同 value相同覆盖;key相同 value不同链表(jdk1.8 长度>8红黑树 6转回成链表)
HashMap 线程不安全、支持null值、初始16*0.75
HashTable 线程安全、不支持null值、被淘汰了

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐