目录 
一、运行程序之前: ...................................................................................................................- 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 -