黑马程序员技术交流社区

标题: 1 -4 的面试题 希望对大家有帮助 [打印本页]

作者: 面嘛嘛    时间: 2015-12-20 22:59
标题: 1 -4 的面试题 希望对大家有帮助
day_1天的面试题
JRE和JDK的区别?
JDK是java开发工具包,工具例如javac编辑字节码文件工具,java运行java文件工具,
JDK包含了JRE,
JRE是java的运行环境,它包含了JVM,JVM是java虚拟机 java虚拟机
Path环境变量和classPath环境变量的区别?
        path环境变量:就是为了配置可执行文件(后缀名是.exe的文件),让我们在任何路径下都可以使用配置后的可执行文件。

                classPath环境变量:
                        就是为了配置类文件(.class:字节码文件),让我们在任何路径下都可以使用配置后的类文件。
                        一般是没有意义的,我们是不需要配置的。
Day02面试题

1.可能会聊得面试题:
        计算机对数据存储和运算的最小单位是?
                字节
        计算机能够识别的进制是哪一种?
                二进制数据

2.boolean占几个字节?
        占一个字节;
                补充:理论上来讲八分之一就够了,因为他的值只有两个,但是计算机最底层的存储单位是字节,
                                所以这里把它当一个字节来算。


3.注意的问题:
class Demo{
        public static void mian(String[] args){
                int a = 100;
                int a = 200;//编译报错,这属于重复定义变量名。
                --------------------------------
                int a = 100;
                a = 200;//这是编译通过的,这属于重新给变量 a 赋值。
        }
}

4.下面那个会出错?

        byte b1 = 10;
        byte b2 = 20;
        byte b3 = b1 + b2;//可能损失精度;
        byte b4 = 10 + 20;//结果是30;

        答案: b3 报错;两种情况:A.byte和byte(short,char)运算时会先提升为int类型,
                                                                                两个int型相加结果也是int类型。
                                                        B.b1和b2是两个变量,变量存储的值是变化的,编译时无法判断里面是否有值,
                                                                                相加后有可能会超出byte类型。
                                        而b4为何不报错?
                                                在编译时直接进行运算,然后看结果是否在左边的数据范围内,
                                                        如果是就不报错,不是就报错。这是因为java编译器有常量优化机制。


Day03 面试题

        1.交换两个int类型的值 int a = 10;int b = 20;
                思路:
                        a。使用第三方变量(开发中使用,因为他有拓展性)
                        b。使用加减法运算方式
                        c。用位运算符(面试用)
        a:int temp;
                temp = a;
                a = b;
                b = temp;

        b: int a =10;
           int b = 20;
           a = a+b;
           b = a-b;
           a = a-b;
       
        c: a = a^b;
           b = a^b;
           a = a^b;

        2.请用高效方式算出 2乘以8?
                答:用位运算符         2<<3(2做移3位)        或   8<<1(8左移1位)
练习题:
                 A:看程序写结果:
                        int x = 2;
                        int y = 3;
                        switch(x){
                                default:
                                        y++;
                                        break;
                                case 3:
                                        y++;
                                case 4:
                                        y++;
                        }
                        System.out.println("y="+y);
        答:y = 4;
       
         B:看程序写结果:
                        int x = 2;
                        int y = 3;
                        switch(x){
                                default:
                                        y++;
                                case 3:
                                        y++;
                                case 4:
                                        y++;
                        }
                        System.out.println("y="+y);
        答:  y = 6;

------------------------------------------------------------

Day04题:
练习题:
        1、在控制台打印:1-10
        代码:
                for(int x = 1; x <= 10; x++){
                        System.out.println(x);
                }
        2、如果改成10-1,怎么打印?
        代码:
                for(int x = 10; x >= 1;x--){
                        System.out.println(x);
                }
               

        3、需求:求1-10之间数据之和。(累加)
                思路:
                        1、定义一个统计变量,用来记录和。
                        2、通过遍历,获取1-10之间的数字。
                        3、累加即可。
                        int sum = 0;
                        for(int i=1; i<=10; i++) {
                                //sum = sum + i;
                                sum+=i;
                        }

        4、思考:求1-100之间的偶数和,应该怎么做?
                int sum = 0;
                //第一种方式
                for(int i=1; i<=100; i++) {
                        if(i%2==0) {
                                sum+=i;
                        }
                       
                }
                //第二种方式
                for(int i=2; i<=100; i+=2) {
                        sum+=i;               
                }
        5、求1-100之间的奇数和,又应该怎么求呢?
        //方式一:
                        int sum = 0;
                        for(int x = 1; x <= 100;x++){
                                if(x%2==1){
                                        sum+=x;                               
                                }
                }
                System.out.println(sum);
               

        6、求10所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
                 举例:153就是一个水仙花数。
                         153 = 111 + 555 + 333 = 1 + 125 + 27 = 153
                提示:
                        求个位: 除1,然后和10取余         153/1%10
                        求十位: 除10,然后和10取余         153/10%10
                        求百位:。。。。。。。。。
                        求万位:除以10000,然后和10取余         12345/10000%10
                代码:
                        for(int x = 100; x <= 999;x++){
                                int ge = x%10;
                                int shi = x/10%10;
                                int bai = x/10/10%10;
                                if((gegege+shishishi+baibaibai)==x){
                                                System.out.println(x);
                                }
                        }
7、
                需求:请输出一个4行5列的星星()图案。    
                       
                       
                       
                       
                        for(int i=1; i<=4; i++) {
                                for(int j=1; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        }

8题:        矩形星阵:        外循环控制的是行,内循环控制的是列。
               

9.
        需求:请输出一个4行5列的星星()图案。    
                       
                       
                       
                       
                        for(int i=1; i<=4; i++) {
                                for(int j=1; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        }
        思路:

                第一行:
                        for(int j=1; j<=5; j++) {
                                System.out.print("");
                        }
                        System.out.println();
                第二行:
                        for(int j=1; j<=5; j++) {
                                System.out.print("");
                        }
                        System.out.println();
                第三行:
                        for(int j=1; j<=5; j++) {
                                System.out.print("");
                        }
                        System.out.println();
                第四行:
                        for(int j=1; j<=5; j++) {
                                System.out.print("");
                        }
                        System.out.println();
               
                矩形星阵:        外循环控制的是行,内循环控制的是列。
       
               
                面试题:打印九九乘法表:
                        13=3 23=6 33=9
                        14=4 24=8
                        for(int i=1; i<=9; i++) {
                                for(int j=1; j<=i; j++) {
                                        System.out.print(j + "" + i + "=" + ij + "\t" );
                                }
                                System.out.println();
                        }
               
        正三角形星阵: 和打印矩形相比,判断条件发生改变。

               
               
               
               
               
                for(int i=1; i<=5; i++) {
                        for(int j=1; j<=i; j++) {
                                System.out.print("");
                        }
                        System.out.println();
                }
                思路:
                        第一行:
                                for(int j=1; j<=1; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第二行:
                                for(int j=1; j<=2; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第三行:
                                for(int j=1; j<=3; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第四行:
                                for(int j=1; j<=4; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第五行:
                                for(int j=1; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
       
       
        倒三角形星阵: 和打印矩形相比,初始化条件发生改变。
               
               
               
               
               
                for(int i=1; i<=5; i++) {
                        for(int j=i; j<=5; j++) {
                                System.out.print("");
                        }
                        System.out.println();
                }

                思路:
                        第一行:
                                for(int j=1; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第二行:
                                for(int j=2; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第三行:
                                for(int j=3; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第四行:
                                for(int j=4; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();
                        第五行:
                                for(int j=5; j<=5; j++) {
                                        System.out.print("");
                                }
                                System.out.println();

                 
               




作者: 唐洪超    时间: 2015-12-21 21:30
不错,6666666666666
作者: icm    时间: 2015-12-21 21:57
恩恩,总结的很好
作者: sooul    时间: 2015-12-21 22:04
不错。。。。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2