一、五道面试题
    1.jdk,jre,jvm的三者关系:
        (1)jdk是java程序开发时用的开发工具包,其内部也有jre运行环境
        (2)jre是java运行时需要的运行环境,就是说如果你光运行java程序而不是去搞开发的话,只安装jre就能运行已经存在的java程序
        (3)jdk,jre内部都包含java虚拟机jvm,java虚拟机内部包含许多应用程序的类解释器和类加载器等等
    2.面向过程和面向对象的区别
        (1)两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。      
        (2)编程思路不同:面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、       执行方法来完成功能。
        (3)封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。面向对象具有继承性和多态性,       而面向过程没有继承性和多态 性,所以面向对象优势是明显。
    3.Java有哪些基本数据类型
        定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。       
        (1)数值型:整数类型(byte,short,int,long)
        (2)浮点类型(float,double) c、字符型(char)
        (3)布尔型(boolean)
    4.什么Java注释
        定义:用于解释说明程序的文字分类:
        单行注释:格式: // 注释文字多行注释:格式: /* 注释文字 */
        文档注释:格式:/** 注释文字 */
        作用:在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内       容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。
        注意事项:多行和文档注释都不能嵌套使用。
    5.Java 有没有 goto
        goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。
二、Java基础
    Java语言的特点:
        (1)平台无关
        (2)简单
        (3)面向对象
        (4)可移植性
        (5)健壮性
        (6)安全性
        (7)多线程
    Java程序运行三步走:
        编写源程序(xxx.java)--(编译器)-->编译class文件(xxx.class)--(虚拟机)->运行(xxx.class)
    Java编码格式:
        (1)类名使用public修饰。
        (2)一行只写一条语句。
        (3){}的使用及位置。
        (4)代码缩进。
    Java命名规范:
        (1)变量名,属性名,方法名一律都是驼峰命名法。
        (2)类名,项目名单词的首字母大写。
        (3)常量命名大写。
        变量名=首字母{1. 字母 2. 下划线“_”3. “$”符号}+其余部分{任意多的:1. 数字 2.字母 3. 下划线“_”4. “$”符号}
    Java变量:
        通俗讲:小明去了一个豪华酒店,房型有豪华间,普通间,简易间,最后小明入住房号为888的豪华间。
        房间               <------->        变量
        房型               <------->        变量类型
        房间名                    <------->        变量名
        入住的人               <------->        变量值
        声明变量的两种方法:
            (1)先声明变量的同时直接赋值。
            (2)先声明后赋值。
    Java类型转换
        强制类型转换:
            由大转小(不能自动转换)例:xxx=(小)(大)。
        自动类型转换:
            (1)两种类型要兼容:
                数值类型(整型和浮点型)互相兼容。
            (2)目标类型大于源类型:
                如:double大于int。
    Java运算符的优先级:
        最高的优先级:小括号“()”。
        最低的优先级:赋值运算符“=”。
        优先级顺序:!>算数运算符>比较运算符>&&>||。
        当运算符比较多,无法确定运算符执行顺序时,可以使用小括号控制一下顺序。
    Java判断语句
        怎么适当使用if...else...和switch?
            连续区间的判断用多重if,单值判断用switch
        switch和多重if的区别:
            相同点:都是用来处理多分支条件的结构
            不同点:switch选择结构:只能处理等值条件判断的情况,而且条件必须是整型变量或字符型变量
                多重if结构:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
        if不能处理异常。
        为什么要处理异常:为了使程序更加健壮,程序员在编码时要考虑用户可能出现的任何问题,并且在程序中做出相应的判断,给用户一个有好的提示。
三、下来给两个逻辑思维题:
    1、一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。
     2、有50家人家,每家一条狗。有一天警察通知,50条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天一枪打死自己家的狗。结果,第一天没有枪声,第二天没有枪声,第三天开始一阵枪响,问:一共死了几条狗?