zoukankan      html  css  js  c++  java
  • Java面试之前复习总结(二)

    51、数组和列表(Array和ArrayList)
    • Array可以包括基本数据类型和对象,ArrayList只能包含对象。
    • Array是固定大小的,ArrayList的大小是动态变化的。
    • ArrayList提供了更多的方法和特性。
    53、截止jdk1.8,java并发啊框架支持锁
    • 读写锁
    • 自族锁
    • 乐观锁
    54、java调试器jdb.exp
    55、得到class的三种方法,以Person为例
    • person.getClass
    • Person.class
    • Class.forName("")
    56、解释JDBC中的角色
    JDBC驱动提供了特定厂商对JDBC API接口类的实现,驱动必须提供java.sql包下这些类实现,connection,Statement,PreparedStatement、CallableStatement、ResultSet和Driver
    57、Java数据库链接JDBC用到哪种设计模式
    桥接模式
    58、I/0用到了装饰器模式
    59、关于java鲁棒性(健壮性)体现
    • Java中不采用指针访问内存单元
    • 无用内存自动回收机制(垃圾回收机制)
    60、关于float与double精度丢失问题
    float:有效位是7位。
    double:有效位16位
    61、产生一个随机数的两种方式(Math.random和Random)
    (1)int a = (int) (Math.random()*100);
    System.out.println(a);
    (2)
    不带种子: 
    Random r=new Random();
    for(int i=0;i<10;i++){
    System.out.println(r.nextInt());
    }
    带种子: 
    此种方式,无论程序运行多少次,返回结果都是一样的 
    public static void main(String[] args) { 
      java.util.Random r=new java.util.Random(10); 
      for(int i=0;i<10;i++){ 
        System.out.println(r.nextInt()); 
      } 
    如果没有提供种子数,Random实例的种子数将是当前时间的毫秒数,可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码,我们可以非常明确地看到这一点。 
    62、直接从键盘获取char
    System.out.println((char)System.in.read());
    63、Java垃圾回收并不能保证内存的耗尽,垃圾回收只是一个低优先级的后台进程,而且跟踪可达或者不可达对象。
    64、try内有return,在return前执行finally中代码。
    65、一点在finally块中使用了return或throw语句,将会导致try,catych块中return throw语句失效。
    66、JVM对异常的处理方法是打印异常的跟踪站信息,并终止程序运行,这就是前面程序在遇到异常后自动结束的原因。
    67、子类抛出的异常不能比父类大。
    68、throw爬出的不是异常类,而是异常实实例。
    69、在Java7以前,每个catch块之恩那个补货一种类型异常,但从Java7开始,一个catch块可以补货多种类型的异常,捕获多种异常时,异常变量有隐士的final修饰,因此,程序不能对异常变量重新赋值
    70、严格封装的类更容易被复用。
    71、被声明为final的变量,必须在声明时进行初始化,而在以后的引用中之恩那个读取,不可更改。
    72、final修饰符的主要作用时声明属性,方法,和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    73、注意不能用abstract修饰构造方法,静态方法和private
    74、一个接口可同时继承两个接口。
    75、在接口里的成员变量,必须初始化而且都是final类型的,就意味着变量变常量。
    76、什么叫重载
    方法名相同,参数个数,类型和顺序可以不同。
    77、重载和重写
    • 重写是父类与子类多态的一种表现,重载是一个类中多态性的一种体现,
    • 充血重被子类重写的访问权限大于被重写方法的权限。
    78、在同一个类中,不同构造方法调用该类的其他构造方法需要使用this形式,而且必须在第一行。
    79、System中所有的成员都是静态的。
    80、关于类加载器,
    • 引导类加载器bootstrap class loader:它用来加载Java的核心库,是用原生代码来实现的。
    • 扩展类加载器extendions class loader:它用来加载Java的扩展库,
    • 系统类加载器System class loader:根据java应用的类路径,classpath类来加载Java类。
    • tomcat为每个APP创建了一个loader,里面保存此webapp的classloader,需要加载webapp下的类时,就取出classloader
    81、JDK1.5之后,Java为基本数据类型提供了自动装箱,拆箱的功能,
    泛型也是在jdk1.5之后引入的。
    82、两种获取随机数方式
    Math.Random Math.Round()这个时四舍五入,要与取随机数分开。
    Random来,分为带种子和不带种子,
    83、关于抽象类与接口
    • 优先选用接口,尽量少用抽象类。
    • 接口和抽象类都不能被实例化。
    84、子类不可以继承父类的构造方法。
    85、封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性。
    86、DBMS中实现事务持久性的子系统是恢复管理子系统。
    87、面试题如果有程序题时,一定要考虑内存
    88、在方面中声明变量不能用static修饰。
    89、Java用监视器机制实现了进程之间的同步执行。
    90、关于Java并发的说法
    ReadWriterLock适用于读多写少的并发场景
    91、Java中常用类库,Runtime,System,Math,Random和Calendar
    • 语言包:lang,系统自动引用此包
    • Object她是所有类的父类
    • 基础类型包装类
    • 数学类
    • String和StringBuilder
    • 系统和运行时类,System in和out时标准输入类和输出类,System所有成员变量都是静态的。
    • Runtime看可以直接访问运行时资源。
    • Class和ClassLoading:classLoder类是一个抽象类,它提供了将类名转为文件名。
    90、关于JVM
    91、关于继承和组合
    • 如果存在一种IS-A的关系,比如Bee时一个Insect,并且一个类需要向另一个类曝露出所有的方法接口,heme更应该用继承。
    • 如果存在一种has-A的关系,比如Bee有一个attack功能,那么更应该用组合。
    关于继承:
    父类更具有通用性,子类更具体,并且继承之间具有传递性,当子类实例化时会递归调用父类中的构造方法。
    关于分页:
    先取总记录数,得到总页数。取所有纪录,最后显示本页数据。
    92、面向对象的五大基本原则
    • 单一职责:就一个类而言,应该仅有一个引起它变化的原因。
    • 里氏替换:子类必须能够替换掉她们的父类。
    • 接口隔离
    • 开放封闭:软件实体,应该可以扩展,但是不可以修改。面对需求,对程序的改动是通过新代码进行的,而不是更改现有代码。
    • 依赖倒置:抽象不应该依赖细节,细节应该依赖抽象,高层模块不应该依赖底层模块,两个都应该依赖于抽象。
    93、WebService是跨平台,跨语言的远程调用技术。
    Webservice采用soap细致
    WSDL是用来描述WebService以及如何对她们进行访问。
    94、String类底层采用char数组来保存字符串。
    95、interface默认方法有public,abstract修饰,变量为public static final修饰
    96、依赖注入的动机就是减少组件之间的耦合度,使开发简洁。
    97、前置线程用于执行任务,后台线程用于内存分配,前台线程结束当前进程结束,进程技术,后台线程未必结束,
    main()函数是一个前台进程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后技术,不管有没有完成,后台线程主要用于内存分配方面。
    98、数组是一个对象,数组不是一种原生类,数组存储在堆中连续内存空间里。
    99、concurrentMap使用gsegment来分段和管理锁。segment继承字Reentrantlock因此,concurrentHashMap使用ReentrantLock来保证线程安全。
    100、事件处理模型有三个要素。
    事件源,事件,事件监听器。
    101、JDK提供的用于并发编程的同步器Semaphore,CyclicBarrier,CountDownLatch、
    102、URL:同一资源定位符。
    http://localhost:8080/OD
    协议 主机名 端口 路径
    为什么没有ip,因为ip地址 + 子网掩码 = 主机号
    103、Arrays.sort()使用的是快速排序和归并排序
    • 基本类型使用的是一个更过调优的快速排序方法。
    • 对象使用归并排序。
    • 如果是一个对象,则必须实现Comparable接口,则一个经过修改的归并排序算法。
    Collection.sort()是归并排序。0
  • 相关阅读:
    缓存一致性问题
    缓存雪崩
    mysql Replication机制
    数据库水平切分、拆库拆表
    mysql分表和分区实际应用简介
    mysql中间件
    mysql基础知识
    go语言redis使用(redigo)
    nginx location配置与rewrite配置
    PDO驱动使用
  • 原文地址:https://www.cnblogs.com/suiyue-/p/6864002.html
Copyright © 2011-2022 走看看