java面试第一次问题,时间没把握好,有点紧张,其实都是很简单的题,笔试感觉良好,面试可能回答不太满意,继续加油,建议初学者把基础学扎实,葵花宝典你值得拥有
2018-09-14 12:30
615 查看
笔试题:
1、描述一下JVM加载class文件的原理机制?
2、静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。 3、
在java中如何跳出当前的多重嵌套循环?
方法一:可以在需要的循环语句前定义一个标号, 然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环 方法二:可以在需要的循环条件内加入一个boolean类型的判断,需要的时候将此变量值反转,再break当前循环即可跳出。 public class Test { public static void main(String[] args) { method1(); method2(); } //方法一: 利用标签 public static void method1(){ tag:for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ System.out.println("i="+i+",j="+j); if(j==5){ break tag;//跳到循环外的tag出,即终止整个循环 } } } } //方法二: 增加循环条件判断 public static void method2(){ int[][] arr = {{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(int i=0;i<arr.length && !found;i++){ for(int j=0;j<arr[i].length;j++){ System.out.println("i="+i+",j="+j); if(arr[i][j]==5){ found = true;//找到5,使外层循环判断条件变为false则终止整个循环 break;//跳出当前循环 } } } } } 建议:推荐使用方法一,方便灵活,且代码可读性好。
4、接口和抽象类有什么区别?
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。 下面比较一下两者的语法区别: 1.抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5. 抽象类中可以包含静态方法,接口中不能包含静态方法 6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 7. 一个类可以实现多个接口,但只能继承一个抽象类。 下面接着再说说两者在应用上的区别: 接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码 5、打印出所有的水仙花数? public class Flower { public static void main(String[] args) { int temp=0; System.out.println("水仙花数为:"); for (int i=100;i<999 ;i++ ) { temp = i; int x= temp/100;//算出百位数, 因为x是int类型 所以小数省去 int y= temp%100/10;//算出十位数 int z= temp%10;//算出个位数 if (i==x*x*x+y*y*y+z*z*z) { System.out.println(i); } } } }
6、对十个数进行排序?
public class maopao { public static void main(String[] args) { int arr[] = {12,23,2,5,43,13,11,21}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-i-1; j++) { if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
7、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
public static int getage(int age){ if(age == 1){ return 10; }else{ return 2 + getage(age-1); } }
8、某个公司采用公用电话网络传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换
public class Phone { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int a,aa,aaa,aaaa = 0; a = num % 10; aa = num / 10 % 10; aaa = num / 100 % 10; aaaa = num / 1000; a = (a+5) % 10 ; aa = (aa+5) % 10; aaa = (aaa+5) % 10; aaaa = (aaaa+5) % 10; /*第一第四交换*/ int temp = a; a = aaaa; aaaa = temp; /*第二和第三位交换*/ temp = aa; aa = aaa; aaa = temp; System.out.println("wei"+aaaa+aaa+aa+a); } }
9、利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
public class Xvexichengji { public static void main(String[] args) { System.out.println("输入姓名"); Scanner sc= new Scanner(System.in); String ren = sc.next(); System.out.println("输入成绩"); while (true) { Scanner chengji = new Scanner(System.in); Double shu = chengji.nextDouble(); if (shu > 100 || shu < 0) { System.out.println("输入的成绩有误,请重新输入"); continue; } else { if (shu >= 90) { System.out.println(ren+"的成绩为A"); break; } else if (shu < 60) { System.out.println(ren+"的成绩为C"); break; } else { System.out.println(ren+"的成绩为B"); break; } } } } }
面试问题:
1:自我介绍
2:你对jvm了解多少?你知道其他的jvm加载器?
3:break和continue的区别?
break和continue都是用来控制循环结构的,主要是停止循环。 1.break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。 这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。 2.continue continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
4:之前项目有多少人?你负责什么部分?为什么离职?期望薪资?
相关文章推荐
- java基础:常见的概念问题,面试笔试可能会遇到哟
- JAVA基础笔试、面试常见问题集合
- JAVA -- JAVA基础笔试、面试常见问题集合
- 应聘Java笔试时可能出现问题及其答案 (Java基础方面)
- 2018/01/05Java基础学习——面试可能提的问题
- 第一次回答java初学者的问题
- JAVA基础笔试、面试常见问题集合
- Java程序基础测试 基础笔试、面试常见问题集合
- 应聘Java笔试时可能出现问题(答案不一定正确)
- 应聘Java笔试时可能出现问题及其答案
- 对于初学者学习Java语言的建议-Java基础-Java-编程开发
- [转] 应聘Java笔试时可能出现问题及其答案(第三部分)
- 应聘Java笔试时可能出现问题及其答案(第二版 第三部分)
- 应聘Java,jsp,j2ee软件工程师笔试中可能出现的问题
- net基础笔试、面试常见问题集合
- 应聘Java笔试时可能出现问题及其答案(第二版 第一部分)
- 应聘Java笔试时可能出现问题及其答案 (五)
- 应聘Java笔试时可能出现问题及其答案 (十二)
- JAVA程序员面试32问,你能回答多少题?-Java基础-Java-编程开发
- 应聘Java笔试时可能出现问题