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();
|
|