Java面试之基础

2018-06-17 18:57:37来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

  1. JDK常用包
    • java.lang:存放系统的基础类,比如:String、Math、Integer和Thread等,提供常用功能
    • java.io:存放与输入输出有关的类
    • java.net:存放与网络有关的类,比如URL、URLConnection等
    • java.util:存放系统辅助类,特别是集合类
    • java.sql:存放数据库操作有关的类,比如:Connection、ResultSet、Statement等
  2. get和post的区别
    • get从服务器获取数据,post是向服务器传送数据
    • get传送的数据量较小,不能大于2kb,post传送数据量较大,默认无限制
    • get安全性低,post安全性高,但get执行效率高于post
    • 执行文件上传时只有用post 
  3. java多态的具体体现
    • 面向对象的四个特征:抽象、继承、封装、多态
    • 多态的四种体现:
      • 接口和接口的继承
      • 类和类的继承
      • 重载
      • 重写
    • 重载:发生在同一个类中,多个方法名一致,但参数类型和参数个数不一致,则该方法被重载了
    • 重写:发生在子类继承父类的关系中,子类继承父类方法,方法名、参数、返回值类型一致,但方法体不一致,则该方法被重写了
  4. Hashtable和HashMap区别
    • Hashtable和HashMap都是Map的实现
    • Hashtable是线程安全的,HashMap是线程非安全的
    • Hashtable不允许有空(null)的键值对,而HashMap允许
    • HashMap的效率高于Hashtable
  5. 九大隐式对象
    • 输入输出对象:request、response、out
    • 作用域通信对象:session、application、pageContext
    • Servlet对象:page、config
    • 错误对象:exception
  6. List和Set
    • List和Set都继承于Collection接口,List是一个有序可重复的集合,Set是一个无序不可重复的集合
    • List接口实现类有ArrayList、LinkedList、Vector。
      • ArrayList和Vector是基于数组实现的,所以查询快,增删慢(Vector是线程安全的,所以查询效率低于ArrayList)。
      • LinkedList是基于链式存储结构,所以查询慢,增删快。
    • Set接口实现类有HashSet,LinkedHashSet,TreeSet。
      • HashSet是无序不可重复的,顺序可能变化,元素可以为null,但只能有一个null
      • LinkedHashSet按放入顺序有序不可重复的
      • TreeSet默认以自然排序方式排序,还有定制排序。存放的为同一个类的对象,不允许为null
  7. 冒泡排序
    public class Sort {
    	public static void sort() {
    		Scanner input = new Scanner(System.in);
    		int sort[] = new int[10];
    		int temp;
    		System.out.println("请输入10个排序的数据:");
    		for (int i = 0; i < sort.length; i++) {
    			sort[i] = input.nextInt();
    		}
    		for (int i = 0; i < sort.length - 1; i++) {
    			for (int j = 0; j < sort.length - i - 1; j++) 			{
    				if (sort[j] < sort[j + 1]) {
    					temp = sort[j];
    					sort[j] = sort[j + 1];
    					sort[j + 1] = temp;
    				}
    			}
    		}
    		System.out.println("排列后的顺序为:");
    		for(int i=0;i<sort.length;i++){
    			System.out.print(sort[i]+"   ");
    		}
    	}
    	public static void main(String[] args) {
    		sort();
    	}
    }
    
  8. 实现线程的两种方式
    • 继承Thread类:重写run()方法,调用start()开启线程
    • 实现Runnable接口:实现run()方法,调用start()开启线程
  9. jvm内存结构
    • 堆(heap):存放对象的实例,即new出来的对象
    • 栈(stack):存放基本数据类型和引用数据类型的地址
  10. 单例设计模式(23种设计模式详解):私有化的构造函数、私有静态全局变量、公有静态方法
    • 恶汉式:线程安全
      public class Singleton1 {
            private Singleton1() {};
            private static Singleton1 single = new Singleton1();
            public static Singleton1 getInstance() {
                return single;
           }
       }
      
    • 赖汉式:线程不安全
      public class Singleton2 {
            private Singleton2() {}
            private static Singleton2 single=null;
            public static Singleton2 getInstance() {
                 if (single == null) {  
                    single = new Singleton2();
                }  
               return single;
           }
       }
      
      • 线程安全:
        public class Singleton3 {   
            private static class LazyHolder {   
              private static final Singleton3 INSTANCE = new Singleton3();   
            }   
            private Singleton3 (){}   
            public static final Singleton3 getInstance() {   
                return LazyHolder.INSTANCE;   
            }    
        
        }
        

         

  11. error和exception
    • error:程序无法处理的错误,发生错误时jvm一般会选择线程终止
    • exception:程序本身可以处理的异常
      • 运行期异常:
        • ArithmeticException:数学计算异常
        • NullPointerException:空指针异常
        • ArrayOutOfBoundsException:数组索引越界异常
        • ClassNotFoundException:类文件未找到异常
        • ClassCastException:类型转换异常
      • 编译期异常:
        • EOFException: 文件结束异常
        • FileNotFoundException:找不到文件异常

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:[修正] Firemonkey TFrame 存档后,下次载入某些事件连结会消失

下一篇:【心得】关于删除结构体动态数组指定项的正确方法