logo资料库

Java经典面试题+答案(带书签)pdf.pdf

第1页 / 共62页
第2页 / 共62页
第3页 / 共62页
第4页 / 共62页
第5页 / 共62页
第6页 / 共62页
第7页 / 共62页
第8页 / 共62页
资料共62页,剩余部分请下载后查看
目录
一、运行程序之前
1.Path与 classpath图解
2. Unicode问题
3.Eclipse简便设置
二、基础知识
1.主方法中args 是什么意思
2.&和&&的区别
3.Byte 类型的-128 怎么表示
4.==运算符
5.Switch问题
6.什么是实例变量?什么是类变量
7.三元运算
8.两种创建数组的内存情况
9.String创建对象的内存问题
10.For和 while 的区别
11.垃圾回收机制
12.==与equals 的区别
13.堆内存与栈内存的区别
14.变量不赋值与赋null的区别
15.可变参数为什么要定义在参数列表的后面
16.绝对路径和相对路径的区别
17.Final关键字与宏的区别
18.0.01+0.09
19.类文件冲突
20.基本数据类型强制转换
21.创建对象时,内存问题
22.Null属于什么类型
三、Java三大特性:
1.多态到底是什么
2.关于继承与实现的问题
3.抽象关键字为什么不能和 private、static、final共存
4.抽象类和接口的区别
5.重载和重写的区别
6.匿名内部类中对接口的方法为什么要加public
7.静态内部类的作用
8.构造代码块和构造函数的区别
9.匿名内部类
10.This 与this()的区别
11.两种单例模式的区别
12.继承中的构造方法
13.Java接口和C++的虚类区别
14.类初始化顺序
15.普通代码块、静态代码块、构造代码块区别
16.可以调用私有构造方法吗
17.子类实例化的初始化过程
四、异常
1.Throw和throws 的区别
2.Final,finally 和finalize的区别
3.Java异常处理机制总结
4.Java异常几种处理方式
5.什么时候会用到自定义异常?
6.Try-catch-finally的执行顺序
7.Error与exception 的区别
8.为什么父类不抛异常,子类就不能抛异常
五、多线程
1.继承Thread类,为什么要继承 run方法
2.进程和线程的区别
3.出现死锁的条件
4.Synchronized锁与 lock 锁有什么区别
5.多线程中同步与锁
6.多线程中stop为什么不合适
7.同步代码块和同步方法的区别
8.Sleep和 wait的区别
9.为什么没有同步效果
10.线程的优先级
11.线程获取名称
12.线程的五个状态和特点
13.什么情况下使用Thread 什么情况下使用Runnable
14.同步函数锁问题
六、常用API
1.StringBuffer 与 StringBuilder 的区别
2.Math随机数问题
3.String s="a"+"b"+"c"内存创建了几个对象
4.String类为什么复写Object 类的equals方法
七、IO
1.字节流复制文件
2.怎么删除带内容的文件夹
4.FileWriter默认缓冲区的大小
5.视频文件切割
6.批量更改文件名
7.字符输入流中write()方法
八、集合框架
1.List和Array数组之间怎么互相转换
2.集合框架中容器简单用法
4.Hashtable 和hashMap 的区别
5.Iterator 和for的区别
6.LinkedList 为什么有索引还慢
九、网络编程
1.正则表达式获取字符串中 ip 地址
十、高新部分
1.反射手段创建类对象
2.Invoke 方法
3.3种获取字节码的方式什么时候用
5.动态代理原理
6.javaBean特点
7.如何用反射得到数组类型
8.类加载器有什么用
9.GetAttribute 和getParameter的区别
10.JVM加载class 文件的原理机制
11.泛型与C++模板有什么区别
12.怎样通过反射获取@Test注解类
13.ArrayList代理
14.注解是什么
15.Java泛型擦除
十一、经典问题
1.金额转换问题
2.阶乘后连续0个数问题
3.质数问题
4.数字黑洞问题(尚未解决哦)
5.百鸡问题
6.1~1000累乘后面有多少个零问题
7.猴子分桃问题(尚未解决哦)
8.蚂蚁爬木杆问题
9.螺旋矩阵问题
10.数字转换大小写问题
11.数组去除重复问题
12.希尔排序
目录 一、运行程序之前: ...................................................................................................................- 7 - 1.Path 与 classpath 图解 ..................................................................................................- 7 - 2. Unicode 问题..................................................................................................................- 7 - 3.Eclipse 简便设置 .............................................................................................................- 7 - 二、基础知识: ...........................................................................................................................- 8 - 1.主方法中 args 是什么意思 .............................................................................................- 8 - 2.&和&&的区别 .................................................................................................................- 9 - 3.Byte 类型的-128 怎么表示 ............................................................................................- 9 - 4.==运算符 .........................................................................................................................- 9 - 5.Switch 问题 ......................................................................................................................- 9 - 6.什么是实例变量?什么是类变量....................................................................................- 9 - 7.三元运算 ........................................................................................................................ - 10 - 8.两种创建数组的内存情况 ............................................................................................ - 10 - 9.String 创建对象的内存问题 ........................................................................................ - 11 - 10.For 和 while 的区别 ................................................................................................... - 11 - 11.垃圾回收机制 .............................................................................................................. - 11 - 12.==与 equals 的区别 .................................................................................................. - 11 - 13.堆内存与栈内存的区别 .............................................................................................. - 14 - 14.变量不赋值与赋 null 的区别 ..................................................................................... - 14 - 15.可变参数为什么要定义在参数列表的后面 .............................................................. - 14 - - 1 -
16.绝对路径和相对路径的区别 ...................................................................................... - 15 - 17.Final 关键字与宏的区别 ............................................................................................ - 15 - 18.0.01+0.09 ................................................................................................................... - 15 - 19.类文件冲突 .................................................................................................................. - 16 - 20.基本数据类型强制转换 .............................................................................................. - 17 - 21.创建对象时,内存问题 .............................................................................................. - 18 - 22.Null 属于什么类型 ..................................................................................................... - 18 - 三、Java 三大特性: .............................................................................................................. - 18 - 1.多态到底是什么 ............................................................................................................ - 18 - 2.关于继承与实现的问题 ................................................................................................ - 19 - 3.抽象关键字为什么不能和 private、static、final 共存 ........................................... - 19 - 4.抽象类和接口的区别 .................................................................................................... - 20 - 5.重载和重写的区别 ........................................................................................................ - 21 - 6.匿名内部类中对接口的方法为什么要加 public ........................................................ - 22 - 7.静态内部类的作用 ........................................................................................................ - 22 - 8.构造代码块和构造函数的区别 .................................................................................... - 22 - 9.匿名内部类 .................................................................................................................... - 22 - 10.This 与 this()的区别.............................................................................................. - 23 - 11.两种单例模式的区别 .................................................................................................. - 23 - 12.继承中的构造方法 ...................................................................................................... - 23 - 13.Java 接口和 C++的虚类区别.................................................................................... - 23 - 14.类初始化顺序 .............................................................................................................. - 23 - - 2 -
15.普通代码块、静态代码块、构造代码块区别 .......................................................... - 24 - 16.可以调用私有构造方法吗 .......................................................................................... - 27 - 17.子类实例化的初始化过程 .......................................................................................... - 27 - 四、异常:................................................................................................................................ - 27 - 1.Throw 和 throws 的区别............................................................................................. - 27 - 2.Final,finally 和 finalize 的区别 ................................................................................... - 27 - 3.Java 异常处理机制总结 ............................................................................................... - 28 - 4.Java 异常几种处理方式 ............................................................................................... - 28 - 5.什么时候会用到自定义异常? .................................................................................... - 29 - 6.Try-catch-finally 的执行顺序 ..................................................................................... - 29 - 7.Error 与 exception 的区别.......................................................................................... - 30 - 8.为什么父类不抛异常,子类就不能抛异常 ................................................................. - 30 - 五、多线程: ............................................................................................................................ - 30 - 1.继承 Thread 类,为什么要继承 run 方法 ................................................................. - 30 - 2.进程和线程的区别 ........................................................................................................ - 30 - 3.出现死锁的条件 ............................................................................................................ - 31 - 4.Synchronized 锁与 lock 锁有什么区别 .................................................................... - 31 - 5.多线程中同步与锁 ........................................................................................................ - 31 - 6.多线程中 stop 为什么不合适 ...................................................................................... - 32 - 7.同步代码块和同步方法的区别 .................................................................................... - 32 - 8.Sleep 和 wait 的区别 ................................................................................................... - 32 - 9.为什么没有同步效果 .................................................................................................... - 32 - - 3 -
10.线程的优先级 .............................................................................................................. - 33 - 11.线程获取名称 .............................................................................................................. - 33 - 12.线程的五个状态和特点 .............................................................................................. - 34 - 13.什么情况下使用 Thread 什么情况下使用 Runnable ........................................... - 34 - 14.同步函数锁问题 .......................................................................................................... - 35 - 六、常用 API ............................................................................................................................ - 35 - 1.StringBuffer 与 StringBuilder 的区别 ...................................................................... - 35 - 2.Math 随机数问题 ......................................................................................................... - 35 - 3.String s="a"+"b"+"c"内存创建了几个对象 ............................................................ - 35 - 4.String 类为什么复写 Object 类的 equals 方法 ....................................................... - 36 - 七、IO ....................................................................................................................................... - 37 - 1.字节流复制文件 ............................................................................................................ - 37 - 2.怎么删除带内容的文件夹 ............................................................................................ - 38 - 4.FileWriter 默认缓冲区的大小 ..................................................................................... - 39 - 5.视频文件切割 ................................................................................................................ - 39 - 6.批量更改文件名 ............................................................................................................ - 40 - 7.字符输入流中 write()方法 ...................................................................................... - 40 - 八、集合框架 ............................................................................................................................ - 41 - 1.List 和 Array 数组之间怎么互相转换 ......................................................................... - 41 - 2.集合框架中容器简单用法 ............................................................................................ - 41 - 4.Hashtable 和 hashMap 的区别 ................................................................................. - 41 - 5.Iterator 和 for 的区别 .................................................................................................. - 42 - - 4 -
6.LinkedList 为什么有索引还慢 .................................................................................... - 42 - 九、网络编程 ............................................................................................................................ - 42 - 1.正则表达式获取字符串中 ip 地址 ............................................................................... - 42 - 十、高新部分 ............................................................................................................................ - 43 - 1.反射手段创建类对象 .................................................................................................... - 43 - 2.Invoke 方法 ................................................................................................................... - 43 - 3.3 种获取字节码的方式什么时候用 ............................................................................. - 44 - 5.动态代理原理 ................................................................................................................ - 44 - 6.javaBean 特点 .............................................................................................................. - 45 - 7.如何用反射得到数组类型 ............................................................................................ - 45 - 8.类加载器有什么用 ........................................................................................................ - 46 - 9.GetAttribute 和 getParameter 的区别 .................................................................... - 46 - 10.JVM 加载 class 文件的原理机制 .............................................................................. - 47 - 11.泛型与 C++模板有什么区别..................................................................................... - 51 - 12.怎样通过反射获取@Test 注解类 .............................................................................. - 52 - 13.ArrayList 代理 ............................................................................................................ - 52 - 14.注解是什么 .................................................................................................................. - 53 - 15.Java 泛型擦除 ............................................................................................................. - 53 - 十一、经典问题 ........................................................................................................................ - 55 - 1.金额转换问题 ................................................................................................................ - 55 - 2.阶乘后连续 0 个数问题 ................................................................................................ - 55 - 3.质数问题 ........................................................................................................................ - 56 - - 5 -
4.数字黑洞问题(尚未解决哦) .................................................................................... - 56 - 5.百鸡问题 ......................................................................................................................... - 57 - 6.1~1000 累乘后面有多少个零问题 ............................................................................. - 57 - 7.猴子分桃问题(尚未解决哦) .................................................................................... - 57 - 8.蚂蚁爬木杆问题 ............................................................................................................ - 58 - 9.螺旋矩阵问题 ................................................................................................................ - 58 - 10.数字转换大小写问题 .................................................................................................. - 59 - 11.数组去除重复问题 ...................................................................................................... - 60 - 12.希尔排序 ...................................................................................................................... - 60 - - 6 -
一、运行程序之前: 1.Path 与 classpath 图解 答案:path 顺序: classpath 顺序: 2. Unicode 问题 答案 :Unicode 规范中推荐的标记字节顺序的方法是 BOM。 ①所以在转换为 Unicode 是加入了 BOM (Byte Order Mark) 可以理解为采用那种排 序方式吧。 ②如果接收者收到 FEFF(-1,-2),就表明这个字节流是 Big-Endian 的;如果收到 FFFE(-2,-1),就表明这个字节流是 Little-Endian 的。 ③在 Java 中直接使用 Unicode 转码时会按照 UTF-16LE 的方式拆分,并加上 BOM 所以就是 FFFE(-2,-1),这就是为什么会有-2,-1 了。 ④UTF8 字节没有顺序,所以它可以被用来检测一个字节流是否是 UTF-8 编码的,所 以在 UTF-8 中没有这个内容,我们平时用 UTF-8 比较多,所以看不到这个。 3.Eclipse 简便设置 答案:①Eclipse 中代码编辑背景颜色修改:代码编辑界面默认颜色为白色。对于长期使用 - 7 -
电脑编程的人来说,白色很刺激我们的眼睛,所以改变 workspace 的背景色,可以使眼睛 舒服一些。设置方法如下: A)打开 window / Preference,弹出 Preference 面板 B)展开 General 标签,选中 Editors 选项,展开。 C)选中 Text Editors,右边出现 TestEditors 面板。 面板中有这样一个选项: Appearance color options;其中是各种板块颜色的设置,其中有一项是 background color,勾掉 System Default,点击'color',弹出颜色选择面板,选择喜好的颜色,单击确 定。 注:背景颜色眼科专家推荐:色调 85,饱和度,123,亮度 205。文档都不再是刺眼 的白底黑字,而是非常柔和的豆沙绿色,这个色调是眼科专家配置的,长时间使用会很有效 的缓解眼睛疲劳保护眼睛。 D)返回 Test Editors,单击 Apply 即可。展开 TestEditors,还有其他选项,比如对 错误提示的颜色样式,可根据需要尝试更改一下。 ②Eclipse 字体大小调整:Window / Preferences / General / Appearance /ColorsAnd Fonts ,在右边的对话框里选择 Java- Java Editor Text Font,点击出现的编辑(Edit)按 钮,可以设置显示在在主窗体中程序的字体大小,设置完之后点击右下角的应用(Apply), 最后点击确定(OK)即可。 Xml 文件字体大小的调整: window / preferences / General / appearance / colors and fonts /Basic / "Text font " ,然后点击 Edit,可以设置字体的大小。 注:上述的方法只是在 Eclipse 的一个简单的背景方案设置,Eclipse 里还可以使用专 门的插件对代码背景进行设置,可查看《Eclipse 插件:Eclipse Color Theme》一文。 eclipse 更改 xml 文件,txt 文件,property 文件等文件编辑器的字体设 置:window--preferences--General--appearance--colors and fonts--Basic-- "Text font " ③ Eclipse 代码自动补全 在做 Eclipse 项目的时候,发现代码补全功能不太好,总是需要在点击 “.”号之后才 能出现代码提示的功能。不想 Visual Studio 里面点击一个字母就出现代码提示。当然 Visual Studio 里面如果增加了 Visual Assistant 那就更加如虎添翼了。所以 google 了一下 Eclipse 里面怎么也实现和 Visual Studiao 一样的代码补全功能。下面是搜索到的文章。 打开 Eclipse-> Window -> Perferences,会打开个 Perferences 的设置界面. 找到 Java 下的 Editor 下的 Content Assist , 右边出现的选项中,有一个 Auto activationtriggers for Java:会看到只有一个"."存在。表示:只有输入"."之后才会有代码提 示,我们要修改的地方就是这里,将“.”改为“.abcdefghijklmnopqrstuvwxyz”即可。 二、基础知识: 1.主方法中 args 是什么意思 答案:String[] args :是保存运行 main 函数时输入的参数的字符串数组,当在 cmd 运行 时,输入: java test a b c,数组就会将 abc 保存起来: args[0] = a; args[1] = b; args[2] = c;这些变量在程序中是可以调用的 - 8 -
分享到:
收藏