广州面试题------39健康网1广州启生信息技术有限公司

广州面试题------39健康网1广州启生信息技术有限公司

广州面试题------39健康网1广州启生信息技术有限公司

广州面试题------39健康网1广州启生信息技术有限公司广州面试题------39健康网1广州启生信息技术有限公司

部分笔试答案:

3.接口(interface)是抽象方法和常量值的定义的集合。

本质上讲,接口是一种特殊的抽象类,这种抽象类中包含常量和方法的定义,而没有变量和方法的实现。

    1、接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则

    2、抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。

    假设有2个类,一个类是主力球员,一个类是替补球员。

    我们发现,NormalPlayer和SubPlayer有共同的属性和方法,当然也有不同的属性和方法。把2个类的共同部分抽象出一个基类。

    然后让先前的2个类派生于这个基类。

    接着,我们发现NormalPlayer和SubPlayer计算日薪和周薪的方法也可以抽象出来,作为虚方法放到基类中

    在NormalPlayer和SubPlayer这2个派生类中,需要重写基类的虚方法

    但在实际情况中,BasePlayer只是一个抽象出来的类,我们并不希望实例化这个类。这时候,就可以把BasePlayer设计为abstract抽象类。同时,在抽象类中,提供一个计算薪水的抽象方法。一旦在基类中声明了没有方法体的抽象方法,所有派生于这个抽象类的类必须实现或重写基类中的抽象方法。

     理解:

    1、抽象类里面可以有非抽象方法但接口里只能有抽象方法 声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。...

    2、抽象类不能直接new对象,它只能被继承,而且单一继承。也就是说它把公共的东西抽象出来,子类可以调用父类的方法,也可以拓展自己的功能,就像子承父业一样。接口可以被多次继承,这是和抽象类的最大区别。也就是说接口是一个公共用品谁都可以拿来用的,不想抽象类,不是他的子类是不能调用的。希望对你有帮助

    3、当描述一组方法的时候使用接口  当描述一个虚拟的物体的时候使用抽象类

4.继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。

java的同步机制,一般有:
1.synchronized;
2.Object方法中的wait,notify;
3.ThreadLocal机制?? 来实现的。

如果需要隔离多个线程之间的共享冲突,可以使用ThreadLocal

5.sleep来自Thread类,和wait来自Object类。sleep方法没有释放锁,而wait方法释放了锁。使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。

6.有两种:1.Map map = new ConcurrentHashMap();2.Map map = Collections.synchronizedMap(new HashMap());

7.ArrayList 采用的是数组形式来保存对象查询快,增删慢。LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引,增删快,查询慢。ArrayList和Vector都是用数组方式存储数据,Vector是线程安全,ArrayList是线程不安全。当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。

8.JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。

9.Java默认提供三个ClassLoader,:Bootstrap ClassLoader(启动类加载器)、Extension ClassLoader(扩展类加载器)和AppClassLoader(系统应用类加载器)。

广州面试题------39健康网1广州启生信息技术有限公司

流程:

    启动类加载器负责负责加载JDK中的核心类库

    扩展类加载器负责加载Java的扩展类库

    系统应用类加载器负责加载应用程序classpath目录下的所有jar和class文件。

10.TCP与UDP的区别?

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP对系统资源要求较多,UDP对系统资源要求较少。