JAVA面试题学习笔记(五)

  1. 在Java语言中,最常用的创建对象的方法为使用new创建一个对象,这种方式通过调用类的构造方法来完成对象的创建,除此之外,还有如下几种创建对象的方法:
    1)调用对象的clone方法,需要以下几个步骤才能使用clone方法:
    ①实现clone的类首先需要继承Cloneable接口。Cloneable接口实质上是一个标识接口没有任何接口方法。
    ②在类中重写Object类中的clone方法。
    ③在clone方法中调用super.clone()。无论clone类的继承结构是什么,super.clone()都会直接或间接调用java.lang.Object类的clone()方法。
    2)通过反射机制来创建对象。
    3)通过反序列化的方式创建对象。
  2. 传输层协议主要有TCP协议与UDP协议。UDP(User Datagram Protocol,用户数据报协议)提供无连接的通信,不能保证数据包被发送到目标地址,典型的即时传输少量数据的应用程序通常使用UDP;而TCP(Transmission Control Protocol,传输控制协议)是一种面向连接(连接导向)的、可靠的、基于字节流的通信协议,它为传输大量数据或为需要接收数据许可的应用程序提供连接定向和可靠的通信。
    TCP连接就像打电话,用户拨打特定的电话号码,对方在线并接起电话,然后双方进行通话,通话完毕之后再挂断,整个过程是一个相互联系、缺一不可的过程。而UDP连接就像发短信,用户短信发送给对方,对方有没有收到信息,发送者根本不知道,而且对方是否回答也不知道,对方对信息发送者发送消息也是一样。
    TCP与UDP都是常用的通信方式,在特定的条件下发挥不同的作用。具体而言,TCP和UDP的区别主要表现为以下几个方面:
    1)TCP是面向连接的传输控制协议,而UDP提供的是无连接的数据报服务。
    2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复和乱序,应用程序需要负责传输可靠性方面的所有工作。
    3)TCP对系统资源要求较多,UDP对系统资源要求较少。
    4)UDP具有较好的实时性,工作效率较TCP协议高。
    5)UDP段结构比TCP的段结构简单,因此网络开销也小。
    既然UDP协议比TCP协议的效率更高,为什么TCP还能够保留呢?其实,TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。在有些环境下,UDP确实高效但在某些环境下,需要可靠的连接,此时采用TCP协议则更好。在提及TCP的时候,也一般提及IP协议,IP协议是一种网络层协议,它规定每个互联网上的计算机都有一个唯一的IP地址,这样数据包就可以通过路由器的转发到达指定的计算机,但IP协议并不保证数据传输的可靠性。
  3. 在Java语言中,被声明为static的方法为静态方法,静态方法内部只能调用静态方法,不能调用非静态方法。原因是静态方法是类的方法,是不依赖于对象而存在的,在不创建对象的时候就可以调用;而非静态方法是对象的方法,只有对象被实例化后才存在。因此,当静态方法调用非静态方法时,就会出现编译错误。
  4. 在Java语言中,主要有如下几种方法可以用来获取Class对象:
    1)调用对象的getClass方法,选项D就是采用这种方法。
    2)调用Class.forName()方法,这个方法的参数为类的全名(包名.类名),选项E就是使用这种方法。
    3)使用.class语法来获得Class对象,具体而言,就是调用类的.class来获取Class对象选项C就是采用这种方法。
  5. 页式存储分配是把到来的作业分成相等大小的页,段式存储管理是指把一个程序分成若干个段(Segment)进行存储,每个段都是一个逻辑实体(Logical Entity)。段页式虚拟存储管理是基本分段存储管理方式和基本分页存储管理方式原理的结合,兼有段式和页式管理的优点,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名,页间不要求连续(能动态连接),用分段方法分配管理作业,用分页方法分配管理内存。它的特点是空间浪费小、存储共享容易、存储保护容易以及能动态连接。
    段页式管理采用二维地址空间,如段号(S)、页号(P)和页内单元号(D)。系统建两张表格每一作业一张段表,每一段建立一张页表,段表指出该段的页表在内存中的位置,地址变换机构类似页式机制,只是前面增加一项段号。所以,段页式管理存储共享容易、存储保护容易。
  6. Applet程序的开发必须继承Applet类,它有5个比较重要的方法,如下所示:
    (1)init()
    当Applet启动的时候,调用完构造方法后,就会调用init方法做一些初始化的工作。因此,这个方法中一般做一些初始化的工作。
    (2)start()
    Applet第一次启动后,调用完init方法后,就会调用start方法来启动需要的一些线程。或者当用户离开HTML页面,然后重新返回页面的时候,start方法也会被调用。
    (3)paint(Graphics g)
    Applet每次重绘的时候都会调用paint方法进行画图。在开发的时候,需要继承这个类完成自己的画图的工作。
    (4)stop()
    这个方法与start方法是相对应的,当用户离开HTML页面的时候,stop方法会被调用,用来停止start方法中启动的线程。
    (5)destory()
    当Applet终止运行时,destory方法会被调用,用来释放所占用的资源。
  7. 在Java语言中,默认使用的Unicode编码方式,即每个字符占用两个字节,无论是中文字符还是英文字符,都会占用两个字节。引申:虽然String是由char所组成的,但是它采用了一种更加灵活的方式来存储,即英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需的存储空间,提高存储效率。
  8. Java应用程序的开发过程如下:首先编写代码,代码文件的后缀为.java,然后编译源代码,用javac命令把源代码编译成中间代码(.class文件),最后用java命令运行中间代码。
  9. package主要有两个作用:第一,提供多层命令空间,解决命名冲突,通过使用package,使得处于不同package中的类可以存在相同的名字;第二,对类按功能进行分类使项目的组织更加清晰。当开发一个有非常多的类的项目时,如果不使用package对类进行分类,而是把所有的类都放在一个package下,这样的代码不仅可读性差,而且可维护性也不好,会严重影响开发效率
  10. 在Java语言中,只允许单重继承,也就是说,任何一个类都只能有一个父类,但是Java语言引入了接口的概念,一个类可以同时实现多个接口,从而间接地实现了多重继承。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值