华为的java电话面试10题

合集下载

华为高级java面试题

华为高级java面试题

华为高级java面试题一. 概述Java作为一门广泛应用的编程语言,具有很高的灵活性和可扩展性,因此在软件开发领域中扮演着重要的角色。

华为作为全球知名的通信技术解决方案提供商,对Java开发人员的技术水平要求也较高。

本文将针对华为高级Java面试题进行详细解析。

二. 题目1:Java多线程基础1. 请简要介绍Java中的线程和进程的概念,并说明它们的区别和联系。

答:Java中的线程是指程序中独立执行的一组代码,可以并发地执行。

而进程是系统中正在运行的一个程序实例。

线程是进程的一部分,一个进程可以包含多个线程,各个线程共享该进程的堆和方法区资源。

线程之间可以通过共享内存进行通信,而进程之间需要通过进程间通信(IPC)来实现。

2. 请简述Java中如何创建线程的两种方式,并比较它们的优缺点。

答:Java中创建线程的两种方式包括继承Thread类和实现Runnable接口。

继承Thread类的方式简单,但由于Java不支持多重继承,所以无法继承其他类。

而实现Runnable接口的方式避免了单继承的限制,并且可以更好地实现代码的解耦和重用。

3. 请解释Java中的同步和异步的概念,并举例说明它们的使用场景。

答:同步指的是多个线程按照一定的顺序来访问共享资源,可以有效避免数据的冲突和不一致。

Java中可以通过synchronized关键字来实现同步。

异步指的是多个线程独立执行,彼此之间不受制约,执行结果由操作系统时间片分配决定。

Java中可以通过多线程的方式实现异步操作,例如使用Future和CompletableFuture来获取异步任务的执行结果。

三. 题目2:Java集合框架1. 请简述Java集合框架的体系结构,并说明List和Set的特点和使用场景。

答:Java集合框架主要包含了Collection接口和Map接口,其中Collection接口又分为List和Set两个子接口。

List是有序的集合,允许存储重复元素,可以通过索引位置来访问和修改集合中的元素。

华为电话面试问题汇总

华为电话面试问题汇总

华为电话面试问题汇总1、LAC寻呼成功率低的解决办法有哪些?a,寻呼策略:(1)GLOBAL寻呼、LAI寻呼(2)采用IMSI寻呼、TMSI寻呼.使用TMSI寻呼,增大寻呼信道容量.(一个寻呼信令可以寻呼4个TMSI,而只能寻呼2个IMSI).b,MSC侧T3113参数作用c,CRH和T3212设置不当d,PCH和SD信道拥塞e,针对性解决寻呼无响应的小区f,LAC区划分不当,寻呼消息过多,LAC插花严重g,交换数据错误(多见于新建站)2、干扰的原因及解决办法有哪些?a,直放站b,设备模块硬件故障c,外部干扰源d,同邻频干扰e,天馈线破损f,网外干扰(CDMA)g,天线安装不合理。

3、T200的含义是什么?T200定时器(Timer200)是Um接口数据链路层LAPDm中的一个重要的定时器。

T200定时器是防止数据链路层数据发送过程死锁的定时器,数据链路层的作用就是将容易出差错的物理链路改造成顺序的无差错的数据链路。

在这个数据链路两端通讯的实体采用确认重发的机制。

也就是说,每发送一个消息都要对端确认收到。

在不可知的情况下,如果这条消息丢失,会出现双方都等待的情况,此时系统死锁。

因此,在发送一方要设立定时器,当定时器溢出,发方认为收方没有收到消息,就会重新发送,在重发次数结束后仍未收到响应消息,向层三发送“ERROR INDICATION(T200超时). 4、基站功率40W,衰减6Db还剩下多少W?10lgA/B=6,A=40W,B=10W或者每衰减3dB功率减半,也可以得出10W。

5、小区切换失败的原因有哪些?a, 邻区关系丢失b,基站时钟不同步c,干扰严重,无线环境差h,切换参数不合理i,目标小区没有可用信道j,硬件故障k,交换和无线数据不匹配,不同厂家设备之间协议问题。

6、路测过程中电平突变的原因有哪些?分空闲状态和通话状态两种状态回答,a,b,c,d为空闲状态A,无主覆盖小区,信号不稳定B,BCCH载频故障,或者传输故障C,CRO设置过大,导致C2值偏高,手机重选过去,实际电平比较低切换至问题载频上D,邻区关系丢失,导致小区重选E,切换至问题载频上F,位置更新导致重选至电平低小区G,干扰,导致切换至其他小区,电平较低7、电话未接通的原因有哪些?A,SD和TCH拥塞B,PCH设置偏小,导致寻呼成功率低C,T3212和交换侧设置不一致,导致出现手机空白D,覆盖盲区E,被叫用户在做位置更新8、如何从层2层3消息中判断掉话?层3:无RELEASE和DISCONECT信令层2:BSC向交换上发一个CLEARE REQUEST消息9、路测中需要注意哪些问题?A,电平覆盖B,语音质量C,接通率D,掉话率10、基站功率降低的原因有哪些?A,基站模块故障B,扩容,从2扩容到4块及以上C,系统调整参数D,天线老化11、C/A含义是什么?同频干扰保护比C/I,要求不小于9Db,邻频干扰保护比为C/A,要求不小于-9dB,工程要求加3dB12、PDCH和PCH的复帧是多少?PDCH为业务信道用52复帧PCH为信令信道用51复帧13、DBD和DBI的关系是?dBi= dBd +2.15dBi和dBd是功率增益的单位,两者都是相对值,dBi的参考基准为全方向性天线;dBd 的参考基准为偶极子,dBm是一个表示功率绝对值的单位,计算公式为:10lg功率值/1mW,dB也是功率增益的单位,按公式10 lg A/B,例如:A功率比B功率大一倍,那么10 lg A/B = 10 lg 2 = 3dB14、下行覆盖差是怎么解决?A,增加功率B,换高增益天线,调整俯仰角、方位角C,直放站,新建站E,减少合路器或者电桥F,更换高功率载频G,增加塔放,增加“村通宝”15、某小区切出差有什么原因?参考5题,切换失败的原因16、在测数据时不能接入是什么原因?A,手机有无开通数据业务B,基站GPRS是否开通C,mfs是否故障,D,覆盖差E,PDCH无资源F,干扰情况G,网关故障H,SGSN故障I,频繁小区重选17、MOS值差怎么解决?MOS——Mean Opinion Score 平均意见值MOS值常以衡量通信系统语音质量的重要指标。

java华为面试题(中博)

java华为面试题(中博)

JAVA方面1.面向对象的特征有哪些方面封装、继承、多态、抽象。

2.String是最基本的数据类型吗?String类是final类型的,因此不可以继承这个类、不能修改这个类。

为了提高效率节省空间,我们应该用StringBuffer类3.int 和 Integer 有什么区别int是基本数据类型中的整型;Integer是年int的包装类,是整型对象。

4.String 和StringBuffer的区别String的长度是不可变的,StringBuffer的长度是可变的。

如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法5.运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

6.说出一些常用的类,包,接口,请各举5个常用类:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包:ng java.awt java.io java.util java.sql常用的接口:Remote List Map Document NodeList7.说出ArrayList,Vector, LinkedList的存储性能和特性ArrayList和Vector都是以数组的形式的存储,ArrayList在动态增加时是增加原来长度的一半,面Vector是增加原来的一倍,ArrayList是java2后的版本,且不同步,而V octor是java1时是版本,是同步的,ArrayList比V octor效率高,ArrayList和Vector的读效率高,但插入和删除的效率很低,而LinkedList使用双向链表实现存储,读的效率要比ArrayList低,但插入和删除的效率比Arraylist要高。

(完整版)华为java笔试面试题

(完整版)华为java笔试面试题

华为Java笔试题+数据库题一、单项选择题 1.Java是从( B)语言改进重新设计。

A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确(B ) A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 3.下列说法正确的有(C ) A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 4.提供Java存取数据库能力的包是( A) A.java.sql B.java.awt C.ng D.java.swing 5.下列运算符合法的是( A) A.&& B.<> C.if D.:= 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是(C ) A.0 B.1 C.-1 D.死循环 7.下列哪一种叙述是正确的( D) A. abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{ }包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 8.下列语句正确的是( C) A.形式参数可被视为local variable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 9.下列哪种说法是正确的(A ) A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 二、多项选择题 1.Java程序的种类有(BCD ) A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有( BCD) A.环境变量可在编译source code时指定 D. javac.exe能指定编译结果要置于哪个目录(directory) 3.下列标识符不合法的有( ACD) A.new B.$Usdollars C.1234 D.car.taxi 4.下列说法错误的有(BCD) A.数组是一种对象 B.数组属于一种原生类 C. int number=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 5.不能用来修饰interface的有(ACD ) A.private B.public C.protected D.static 6.下列正确的有(ACD ) A. call by value不会改变实际参数的数值 B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址 D. call by reference能改变实际参数的内容 7.下列说法错误的有( ACD) A.在类方法中可用this来调用本类的类方法 B.在类方法中调用本类的类方法时可直接调用 C.在类方法中只能调用本类中的类方法 D.在类方法中绝对不能调用实例方法 8.下列说法错误的有(ABC ) A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在 C. Java语言中的方法属于类中的成员(member) D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同 9.下列说法错误的有(BCD ) A.能被java.exe成功运行的java class文件必须有main()方法 B. J2SDK就是Java API C. Appletviewer.exe可利用jar选项运行.jar文件 D.能被Appletviewer成功运行的java class文件必须有main()方法 三、判断题 1.Java程序中的起始类名称必须与存放该类的文件名相同。

java华为可信考试题库及答案

java华为可信考试题库及答案

java华为可信考试题库及答案1. Java中,哪个关键字用于声明一个类?A. classB. publicC. privateD. void答案:A2. 在Java中,下列哪个选项不是合法的变量名?A. _variableNameB. variableNameC. 2variableNameD. $variableName答案:C3. Java中,如何声明一个整型变量并初始化为10?A. int number = 10;B. int number = "10";C. int number = 10.0;D. int number = '10';答案:A4. Java中,下列哪个选项是正确的数组声明方式?A. int[] myArray;B. int myArray[];C. int[] myArray = {1, 2, 3};D. All of the above答案:D5. 在Java中,哪个关键字用于捕获异常?A. tryB. catchC. finallyD. throw答案:B6. Java中,下列哪个选项是正确的继承方式?A. public class Derived extends Base {}B. public class Derived implements Base {}C. Both A and BD. None of the above答案:A7. Java中,下列哪个选项是正确的接口实现方式?A. public interface MyInterface {}B. public class MyClass implements MyInterface {}C. Both A and BD. None of the above答案:C8. 在Java中,下列哪个选项是正确的方法重载声明?A. public void display(int number);B. public int display(int number);C. Both A and BD. None of the above答案:C9. Java中,下列哪个选项是正确的方法覆盖声明?A. public void display() {}B. public void display() throws Exception {}C. Both A and BD. None of the above答案:A10. 在Java中,下列哪个选项是正确的泛型类声明?A. public class Box<T> {}B. public class Box {}C. Both A and BD. None of the above答案:A11. Java中,下列哪个选项是正确的泛型方法声明?A. public <T> void show(T t) {}B. public void show(T t) {}C. Both A and BD. None of the above答案:A12. 在Java中,下列哪个选项是正确的匿名内部类声明?A. new Thread() {public void run() {System.out.println("Thread is running"); }};B. new Thread() {public void run() {System.out.print("Thread is running");}};C. Both A and BD. None of the above答案:C13. Java中,下列哪个选项是正确的线程启动方式?A. Thread t = new Thread();B. Thread t = new Thread();t.start();C. Both A and BD. None of the above答案:B14. 在Java中,下列哪个选项是正确的线程同步方式?A. synchronized methodB. synchronized blockC. Both A and BD. None of the above答案:C15. Java中,下列哪个选项是正确的集合框架类?A. ListB. SetC. MapD. All of the above答案:D。

2023年职场_华为java面试题

2023年职场_华为java面试题

2023年华为java面试题2023年华为java面试题11.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。

Java语言提供了八种基本类型:六种数字类型(四个整数型,两个浮点型)字节型byte 8位短整型short 16位整型int 32位长整型long 64位单精度float 32位双精度double 64位一种字符类型字符型char 8位还有一种布尔型布尔型:boolean 8位可存储"True"和"false"。

String本身就是一个对象而不是基本数据类型,String的变量名是对String类的引用。

2.字符串的操作:写一个方法,实现字符串的反转,如:输入abc,输出cbapublic static String reverse(String s){int length=s.length();StringBuffer result=new StringBuffer(length);for(int i=length-1;i=0;i--)result.append(s.charAt(i));return result.toString();}写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。

String s = "bbbwlirbbb";s.replaceAll("wlirbbb","hhtccc");2023年华为java面试题21.short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)2.float型float f=3.4是否正确?不正确。

华为面试试题 Java技术问答

华为面试试题 Java技术问答

JA V A中的String与StringBuffer的区别,String是只读的,如果要处理在内存中就中new出一个新的String出来,因此如果循环处理次数很多的情况下,用String极慢;StringBuffer 却与之相反,可以直接改源字符串与C中的char*相似,所以对字符串做大量操作的情况下一般用StringBuffer;Java基础方面:1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package 子孙类其他packagepublic √ √ √ √protected √ √ √ ×friendly √ √ × ×private √ × × ×不写时默认为friendly2、ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value3、char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?答:父类:package test;public class FatherClass{public FatherClass(){System.out.println("FatherClass Create");}}子类:package test;import test.FatherClass;public class ChildClass extends FatherClass {public ChildClass(){System.out.println("ChildClass Create");}public static void main(String[] args) {FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass();}}输出结果:C:\>java test.ChildClassFatherClass CreateFatherClass CreateChildClass Create6、内部类的实现方式?答:示例代码如下:package test;public class OuterClass{private class InterClass{public InterClass(){System.out.println("InterClass Create");}}public OuterClass(){InterClass ic = new InterClass();System.out.println("OuterClass Create");}public static void main(String[] args) {OuterClass oc = new OuterClass();}}输出结果:C:\>java test/OuterClassInterClass CreateOuterClass Create再一个例题:public class OuterClass {private double d1 = 1.0;//insert code here}You need to insert an inner class declaration at line 3. Which two inner class declarations arevalid?(Choose two.)A. class InnerOne{public static double methoda() {return d1;}}B. public class InnerOne{static double methoda() {return d1;}}C. private class InnerOne{double methoda() {return d1;}}D. static class InnerOne{protected double methoda() {return d1;}}E. abstract class InnerOne{public abstract double methoda();}说明如下:一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。

华为的Java面试题及答案

华为的Java面试题及答案

华为的Java面试题及答案【网络综合 - 】1.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。

不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。

写出C程序。

循环链表,用取余操作做3.不能做switch()的参数类型是:switch的参数不能为实型。

4. static有什么用途?(请至少说明两种)a.限制变量的作用域b.设置变量的存储域7. 引用与指针有什么区别?a 引用必须被初始化,指针不必。

b 引用初始化以后不能被改变,指针可以改变所指的对象。

c 不存在指向空值的引用,但是存在指向空值的指针。

8. 描述实时系统的根本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局变量和部分变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,部分变量在堆栈10. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于111. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源12. 什么函数不能声明为虚函数?13. 冒泡排序算法的时间复杂度是什么?O(n^2)14. 写出float x 与“零值”比拟的if语句。

if(x>0.000001&&x<-0.000001)16. Inter采用哪种网络协议?该协议的主要层次构造?tcp/ip 应用层/传输层/网络层/数据链路层/物理层17. Inter物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、有哪些数据类型Java定义了8种简单类型:byte、short、int、long、char、float、double和boolean 2、有几种访问机制同一个类同一个包不同包的子类不同包的非子类private yesdefault yes yesprotected yes yes yespublic yes yes yes yes 3、JDBC的过程1. 加载JDBC驱动程序("");建立数据库连接与MySQL数据库建立连接的方法:Connection con=("jdbc:",ID,Pwd);与PostgreSQL数据库建立连接的方法:Connection con=("jdbc:",ID,Pwd);与Oracle数据库建立连接的方法:Connection con=("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL",ID,Pwd);与Sybase数据库建立连接的方法:Connection con=("jdbc:sybase:Tds:MyDbComputerNameOrIP:2638",ID,Pwd);与SQL Server数据库建立连接的方法:Connection con=("jdbc:microsoft:;databaseName=master",ID,Pwd);与DB1数据库建立连接的方法:Connection con=("jdbc:db2:创建并执行SQL语句用()方法来创建一个Statement对象。

Statement对象执行一个查询并从DBMS返回一个包含响应结果的ResultSet对象。

4. 处理从DBMS返回的数据查询处理后从DBMS收到的查询结果赋给对象,该对象包含一些用来从结果集中获取数据存到Java变量中的方法,以便进行进一步处理。

5. 关闭数据库连接使用与数据库有关的对象所消耗的内存是很大的,因此在完成数据库访问后要及时关闭数据库连接,同时还应关闭Connection中返回的内容,包括Statement对象和ResultSet对象。

4、preparStatement和普通statement的区5、servlet的生命周期1. 加载 / 实例化:Servlet容器查找并加载所有的servlet类.当Servlet引擎启动时或者说在客户http 请求委托时实例一个Servle或多个Servlet类2. 初始化这里在客户请求委托代理之前,使用init()方法进行初始化.3. 请求处理当初始化完成之后这时就可以处理客户http请求了.这里使用service()这个方法来完成并把其作参数进行传递,这里的参数包含了httpServletRequest()和httpServletResponse()两个方法分别对应于请求和回应它们也会抛出servletException和IOException然后针对不同的http请求(四个上面说过,get,post,put,head)由doGet(),doPost(),doPut(),doHead(),这四个不同的方法块里的处理单元来处理……4. 删除Sevlet有时出于一些原因需要对Sevlet容器中的servlet实例进行删除,这时就可以调用destroy()方法进行, 执行了这个方法之后,这时Sevlet就不能再执行其它客户机的请求了……而这时它也就成了JAVA垃圾回收机的回收对象了!以上的 4个步骤就是一个servlet的生命周期6、Servlet里的set方法(setAttribute)7、JSP有哪些缺省对象8、怎么样创建,销毁session9、用到什么结果集细述一下ArrayListArrayList是List接口的一个可变长数组实现。

实现了所有List接口的操作,并允许存储null值。

除了没有进行同步,ArrayList基本等同于Vector。

在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和readObject进行了同步,其它比如add(Object)、remove(int)等都没有同步。

1.存储ArrayList使用一个Object的数组存储元素。

private transient Object elementData[];ArrayList实现了接口,这儿的transient标示这个属性不需要自动序列化。

下面会在writeObject()方法中详细讲解为什么要这样作。

和removepublic boolean add(Object o) {ensureCapacity(size + 1); 动变长机制在实例化一个ArrayList时,你可以指定一个初始容量。

这个容量就是elementData 数组的初始长度。

如果你使用:ArrayList list = new ArrayList();则使用缺省的容量:10。

public ArrayList() {this(10);}ArrayList提供了四种add()方法,public boolean add(Object o)public void add(int index, Object element)public boolean addAll(Collection c)public boolean addAll(int index, Collection c)在每一种add()方法中,都首先调用了一个ensureCapacity(int miniCapacity)方法,这个方法保证elementData数组的长度不小于miniCapacity。

ArrayList的自动变长机制就是在这个方法中实现的。

public void ensureCapacity(int minCapacity) {modCount++;int oldCapacity = ;if (minCapacity > oldCapacity) {Object oldData[] = elementData;int newCapacity = (oldCapacity * 3)/2 + 1;if (newCapacity < minCapacity)newCapacity = minCapacity;elementData = new Object[newCapacity];(oldData, 0, elementData, 0, size);}}从这个方法实现中可以看出ArrayList每次扩容,都扩大到原来大小的倍。

每种add()方法的实现都大同小异,下面给出add(Object)方法的实现:public boolean add(Object o) {ensureCapacity(size + 1); 列化支持ArrayList实现了接口,所以ArrayList对象可以序列化到持久存储介质中。

ArrayList 的主要属性定义如下:private static final long serialVersionUID = 189L;private transient Object elementData[];private int size;可以看出serialVersionUID和size都将自动序列化到介质中,但elementData数组对象却定义为transient了。

也就是说ArrayList中的所有这些元素都不会自动系列化到介质中。

为什么要这样实现因为elementData数组中存储的“元素”其实仅是对这些元素的一个引用,并不是真正的对象,序列化一个对象的引用是毫无意义的,因为序列化是为了反序列化,当你反序列化时,这些对象的引用已经不可能指向原来的对象了。

所以在这儿需要手工的对ArrayList的元素进行序列化操作。

这就是writeObject()的作用。

private synchronized void writeObject s)throws for (int i=0; i<size; i++)(elementData);}这样元素数组elementData中的所以元素对象就可以正确地序列化到存储介质了。

对应的readObject()也按照writeObject()方法的顺序从输入流中读取:private synchronized void readObject s)throws ClassNotFoundException {for (int i=0; i<size; i++)elementData = ();}10、面向对象的多态性在JAVA中怎么实现的方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。

子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值。

相关文档
最新文档