Java学习之面试题整理

 

(面试题)Java基本数据类型和引用数据类型(2019年10月8日)

 

1,java 基本数据类型有几种?哪几种?(面试题)
     答:8种 byte short int long float double char booleanhtml

2,int类型是几个字节?(面试题)
     答:4字节java

3, int i = 3000000000; 编译能经过吗?缘由是什么?(面试题)
     答:不能 右边数据是int类型但超出了int类型的表示范围 大约20多亿(-2^31--2^31-1)面试

4,3默认是什么类型?3.14默认是什么类型?(面试题)
     答:3默认int类型 3.14默认double类型编程

5,请问H的字符值(ASCII值)是多少?(面试题)数组

     答:(A:65   a:97)安全

6,为何 int a = 09;会报错
     答:由于在进制表示中0开头的表示八进制,而八进制中不能出现大于7的数!
dom

 

7,int a=3&4;请问a的值为多少模块化

 

     答:在java中,若是&先后都是数字,那么表示位运算符,按位与:先把十进制的数转化成为二进制,而后按位与,都为1的时候才是1,其他都为0post

 

            同理可知  在java中也是位运算符,按位或:先把十进制的数转化成为二进制,而后按位与,都为0的时候才是0,其他都为1spa

 

8,高类型向低类型转换须要强制转换吗?强制转换可能致使什么问题?
     答:须要 可能致使精度丢失或溢出

9,String是基本数据类型吗?(面试题)

     答:不是,是引用数据类型

10, int i=2;  int b = i++ + ++i + i++ ;    b等于多少?i等于多少?(面试题)

     答:计算过程:第一个 i++        i先使用   再自增    2+ ++i + i++    此时 i=3

                              到第二个 ++i     i先自增   再使用    2+4 + i++       此时 i=4

                              到第三个i++     i先使用   再自增     2+4+4            此时 i=5

                            通常可由有多少个  i++  或  ++i  直接肯定  i  的值   ,每出现一次直接加1

 

(面试题)循环语句(2019年10月10号)

 

1,下面程序运行的结果是什么?(面试题)

1 int i = 1 ; 2 while(i<=20){ 3 i++; 4 i=i++ ; 5 System.out.println(" char长度为1,用单引号括起来。 "); 6 } 7 System.out.println(i);

     答:程序陷入死循环   右边的运算结果为1 ,i永远都是1

 

(面试题)二维数组和方法(2019年10月11日)

 

 

1,打印星星

 1 //定义五行  2 int hs = 5;  3 for (int i = 1; i <= hs; i++) {  4 // 打印空格  5 for (int j = 1; j <= hs - i; j++) {  6 System.out.print(" ");  7 }  8 // 打印*号  9 for (int j = 1; j <= i + i - 1; j++) { 10 System.out.print("*"); 11 } 12 System.out.print("\n"); 13 }

 

 

2,冒泡排序(面试题)

有一个数组{7,5,14,23,19,2,4},要求使用冒泡进行排序(从大到小)

 1 public static void main(String[] args){  2 int [] arr={7,5,14,23,19,2,4};  3 //比较轮数  4 for(int i=1;i<arr.length-1;i++){  5 //从左往右,两两相比  6 for(int j=1;j<arr.length-1;j++){  7 //交换  8 if(arr[j]<arr[j+1]){  9 int temp=arr[j+1]; 10 arr[j+1]=arr[j]; 11 arr[j]=temp; 12  } 13  } 14  } 15 } 

3,内存分配原理  (面试题)

  

 

 

(面试题)面相对象(2019年10月14日)

 

1,谈谈你对面向对象的理解?什么是类跟对象?(面试题)

      答:面向对象是向现实世界模型的天然延伸,这是一种“万物皆对象”的编程思想。   类是对象的抽象 对象是类的具体实例。

 

               面向对象有三大特性,封装、继承和多态。

 

            封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提升了数据的隐秘性的同时,使代码模块化。这样作使得代码的复用性更高。

 

            继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每个子类是一个特殊的父类--有父类的行为和属性,也有本身特有的行为和属性。

            这样作扩展了已存在的代码块,进一步提升了代码的复用性。

 

            若是说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。多态的一大做用就是为了解耦--为了解除父子类继承的耦合度。

 

           (这是主观题,不要死记,经过本身理解,而后能够在网上找一些答案,将和本身理解相近的记下来)

         

 

 

1,final的用法?(面试题)

     答:1,当final修饰变量的时候,表示常量,内容不能够更改。
            2,当修饰类的时候表示这个类不可以被继承。
            3,当修饰方法的时候表示这个方法不能被覆写。

2,重载跟重写有什么区别?(面试题)

     答:重写:子类与父类方法名相同,参数列表必须彻底与被重写的方法相同,返回类型必须一直与被重写的方法相同,访问修饰符的限制必定要大于等于被重写方法的访问修饰符,重写最多一次。
            重载:子类与父类方法名相同,必须具备不一样的参数列表, 能够有不一样的返回类型,能够有不一样的访问修饰符,重载能够N次

3,java的3大特性是什么?

     答:封装   继承   多态

 

(面试题)抽象类和静态属性以及静态方法(2019年10月17日)

 

1,抽象类是否必定有抽象方法?

     答:不必定,但有抽象方法的类必定是抽象类

2,堆跟栈有什么区别?

     答:1,最主要的区别就是栈内存用来存储局部变量和方法调用;而堆内存用来存储Java中的对象。不管是成员变量,局部变量,仍是类变量,它们指向的对象都存储在堆内存中。

            2,栈空间比较小;堆空间比较大。

 

3,说下有哪几种访问修饰符?他们有什么区别?(面试题)

     答:public   protected    default(不写)   private    权限由高到低

            private :只有同类能够直接访问

            default(不写):同类,同包能够直接访问

            protected:同类,同包和子类能够直接访问

            public:同类,同包,子类和不一样包的类均可以直接访问

4,java内存结构分为哪几部分?(面试题)

      答:栈,堆,方法区,程序计数器,本地方法栈(native)

5,构建对象会经历哪些步骤?(面试题)

       答:1,访问方法区看类是否已经被加载,若是没有先加载(静态成员会在第一次加载时初始化)

              2,而后经过关键字new在堆中申请空间,初始化对象

              3,执行方法里面的逻辑

6,静态方法中能够调用非静态的变量吗?非静态的方法中能够调用静态的变量吗?(面试题)

     答:静态方法不能够调用非静态的变量,非静态方法能够调用静态的变量

 

(面试题)String,Random,Math 等一些Object对象(2019年10月22日)

1.请列举switch case中能够填写的类型

答:byte  short  int char  String enum

2.请判断下面生成了几个对象

 String a="dax"; String b= new String("dax");

 答:产生两个对象,一个在堆内存中 还有一个在方法区中的常量池中

3.请判断下面输出结果

     String str6 = "b"; String str7 = "a" + str6; String str67 = "ab"; System.out.println("str7 = str67 : "+ (str7 == str67)); 

答:结果是false,由于系统编译的时候不知道str6是一个变量,系统不会自动帮你完成字符串的拼接

3.请判断下面输出结果

     final String str2 = "ab"; final String str3 = "cd"; String str4 = str2+str3; // String str5 = "abcd"; System.out.println("str4 = str5 : " + (str4==str5));

答:输出的结果是true,因为里面都是字符串常量,结果能够在编译期间就肯定下来,因此在class中已是str1 = "abcd"

 

(面试题)ArrayList,HashSet以及HashMap(2019年10月23日)

1,看以下代码会输出什么

1 Integer i1 = 120 ; 2 Integer i2 = 120 ; 3 Integer i3 = new Integer(120); 4 Integer i4 = new Integer(120);

    答: Integer 在类加载的时候会先在静态区中初始化好-128 127 之间的数值,若是在这个范围则直接重复使用,不然在堆中new一个Integer

              120:true 因为10在范围内,因此使用共用静态区中的Integer

              1000:false 因为1000在范围外,因此在堆中从新new一个Integer

2,ArrayList能够有重复的元素吗?元素是有序的吗?

    答:有重复的元素,元素是有序的

3,ArrayList和Vector有什么区别

 答:ArrayList是线程不安全的,效率高

    Vector是线程安全的,效率低

4,有23个对象加入到HashSet中,初始化最小为多少

 答:23/0.75=30.66...<32=2^5

    因此初始化32个最好,又不会扩容。也不会浪费空间

5,写一个迭代器

1 // 迭代器遍历
2 Iterator<String> iterator = set.iterator(); 3 while(iterator.hasNext()){ 4 System.out.println(iterator.next()); 5 }

 6,List 跟Set   Map的区别?

     答:List:继承Collection接口,有序集合,容许重复元素。

            Set: 继承Collection接口,无序集合,不容许重复元素,且最多有一个null值。

            Map: Map是独立接口,key_value键值对存储数据;不容许重复元素。

7,Vector 跟ArrayList的区别是什么?

     答:ArrayList线程不安全,效率高 ,扩容1.5倍;Vector 线程安全,效率低,扩容2倍。

 

8,说下java中的集合,说下ArrayList底层原理?
      答:  对于ArrayList而言,它实现List接口、底层使用数组保存全部元素。其操做基本上是对数组的操做。
                  ArrayList定义只定义类两个私有属性:elementData存储ArrayList内的元素,size表示它包含的元素的数量

9,说下ArrayList跟LinkList的区别?

     答:Arraylist:底层是基于动态数组,动态数组就是改变数组容量方法,建立新的数组,指定新的容量(原来的1.5倍),将旧数组复制到新数组中并本类旧数组指向新数组 

            LinkedList:LinkedList的实现是基于双向链表,并实现队列(Queue),双向队列(Deque)接口     

               对于随机访问:ArrayList优于LinkedList             对于插入和删除操做:LinkedList优于ArrayList

            LinkedList比ArrayList更占内存,由于LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

 

(面试题)异常处理(2019年10月25日)

1,final  finally  finalize有什么区别?

   答:final修饰变量表示其不能改变,修饰方法表示其不能重写,修饰类表示其不能被继承

          finalize当垃圾回收器回收时执行其中的逻辑

          finally不管是否发生异常,最终都会执行其中的逻辑

 

2,throws  throw 区别是什么?

   答:throws:用来声明一个方法可能产生的全部异常,不作任何处理而是将异常往上传,谁调用我我就抛给谁。

          throw:则是用来抛出一个具体的异常类型。

3,写出5个常见异常?(面试题)

   答:数组越界异常 (ArrayIndexOutOfBoundsException )

          空指针异常   (NullPointException)

          类转换异常  (ClassCastException)

          算术异常    (ArithmeticException)

          类不存在异常 (ClassNotFoundException)

 待补充。。。。。

相关文章
相关标签/搜索