Android程序员面试分类模拟2.docx

上传人:王** 文档编号:1332992 上传时间:2024-06-19 格式:DOCX 页数:23 大小:145.56KB
下载 相关 举报
Android程序员面试分类模拟2.docx_第1页
第1页 / 共23页
Android程序员面试分类模拟2.docx_第2页
第2页 / 共23页
Android程序员面试分类模拟2.docx_第3页
第3页 / 共23页
Android程序员面试分类模拟2.docx_第4页
第4页 / 共23页
Android程序员面试分类模拟2.docx_第5页
第5页 / 共23页
Android程序员面试分类模拟2.docx_第6页
第6页 / 共23页
Android程序员面试分类模拟2.docx_第7页
第7页 / 共23页
Android程序员面试分类模拟2.docx_第8页
第8页 / 共23页
Android程序员面试分类模拟2.docx_第9页
第9页 / 共23页
Android程序员面试分类模拟2.docx_第10页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Android程序员面试分类模拟2.docx》由会员分享,可在线阅读,更多相关《Android程序员面试分类模拟2.docx(23页珍藏版)》请在优知文库上搜索。

1、Android程序员面试分类模拟2论述题1. JaVa语言有哪些优点?正确答案:SUN公司对JaVa语言的描述如下:Javaisasimple,object-oriented,dist(江南博哥)ributed,interpreted,robust,secure,architectureneutral,portable,high-performance,multithreaded,anddynamiclanguage具体而言,Java语言具有以下几个方面的优点:DJaVa为纯面向对象的语言(Java编程思想提到JaVa语言是一种mEverythingisObjeCt的语言),它能够直接反映现实

2、生活中的对象,例如火车、动物等,因此通过它,开发人员更容易编写程序。2)平台无关性。JaVa语言可以一次编译,到处运行。无论是在WindoWS平台还是在1.inUx、macOS等其他平台上对JaVH程序进行编译,编译后的程序在其他平台上都可以运行。由于JaVa是解释型语言,编译器会把JaYa代码变成“中间代码”,然后在JVM(JavaVirtualMachine,JaVa虚拟机)上被解释执行。由于中间代码与平台无关,所以,Java语言可以很好地跨平台执行,具有很好的可移植性。3) JaVa提供了很多内置的类库,通过这些类库,简化了开发人员的编程工作,同时缩短了项目的开发时间。例如:提供了对多线

3、程支持,提供了对网络通信的支持,最重要的一点是提供了垃圾回收器,把开发人员从对内存的管理中解脱出来。4)提供了对Web应用开发的支持,例如APPlet、ServIet和JSP可以用来开发Web应用程序。Socket,RMl可以用来开发分布式应用程序的类库。5)具有较好的安全性和健壮性。JaVa语言经常被用在网络环境中,为了增强程序的安全性,Java语言提供了一个防止恶意代码攻击的安全机制(数组边界检测和bytecode校验等3Java的强类型机制、垃圾回收器、异常处理和安全检查机制使得使用Java语言编写的程序有很好的健壮性。6)去除了C+语言中难以理解、容易混淆的特性,例如头文件、指针、结构

4、、单元、运算符重载、虚拟基础类、多重继承等,使得程序更加严i革、简洁。2. instanceof有什么作用?正确答窠:instanceof是Java语言中的一个:元运算符,它的作用是判断一个引用类型的变量所指向的对象是否为一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,返回boolean类型的数据。常见的用法为:resull=objcctinslanccofclass,如果ObjCet是CIaSS的一个实例,则instanceof运算符返回true。如果。bject不是指定类的一个实例,或者object是nu11,则返回false,以如下程序为例:PUbliCcla

5、ssTest(ublicstaticvoidnain(Stringargs)(Strings=Hello”;inta=l,2;if(sInstanceofString)System.out.PrintIn(true);if(sinstanceofObject)System.out.PrintIn(true);if(ainstanceofint)System,out.Println(true);)程序运行结果为:truetruetrue3. 一个Java文件中是否可以定义多个类?正确答案:一个JaVa文件可以定义多个类,但是最多只能有一个类被PUbliC修饰,并且这个类的类名与文件名必须相同,若

6、这个文件中没有PUbliC的类,则文件名随便是一个类的名字即可。需要注意的是,当用javac指令编译这个java文件的时候,它会给每一个类生成一个对应的.class文件。如下例定义DCriVed.java为:classBase(publicvoidprintO(System.out.PrintIn(Base);)publicclassDerivedextendsBasepublicstaticvoidmain(Stringa)Basec=ncwDerivedO;c.print0;)I使用javacDeriVed.java指令编译上述代码,会生成两个字节码文件:Base.class与Derive

7、d.class,然后使用javaDerived指令执行,会输出:Basee4. 变量命名有哪些规则?正确答窠:在JaVa语言中,变量名、函数名、数组名统称为标识符,JaVa语言规定标识符只能由字母(az,AZ)、数字(09)、下划线(J和$组成,并且标识符的第一个字符必须是字母、下划线或$。此外,标识符也不能包含空白字符(换行符、空格和制表符),以卜标识符都是非法的:I)Char:Char是JaVa语言的一个数据类型,是保留字,不能作为标识符,其他的如int、float等类似。2) numberofbook:标识符中不能有空格。3)3com:不能以数字开头。4)a*B:*不能作为标识符的字符。

8、值得注意的是,在Java语言中,变量名是区分大小写的,例如C。Unt与count被认为是两个不同的标识符。5. “=、equals和hashCode的区别是什么?正确答案:“=”运算符用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用“=”运算符。具体而言,如果两个变量是基本数据类型,可以直接用“=”来比较其对应的值是否相等。如果一个变量指向的数据是对象(引用类型),那么,此时涉及了两块内存,对象本身占用一块内存(堆内存),对象的引用也占用一块内存。例如,对于赋值语句Strings=newStringO,变

9、量S占用一块存储空间(一般在栈中),而newString()则存储在另外块存储空间里(一般在堆中),此时,变量S所时应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等(这两个对象是否指向同一块存储空间),这时候就可以用“=”运弊符进行比较。但是,如果要比较这两个对象的内容是否相等,那么用“=”运算符就无法实现了。2)equals是Object类提供的方法之一,每一个Java类都继承自Object类,所以每一个对象都具有equals这个方法。ObjeCt类中定义的equals(Object

10、)方法是直接使用“=”比较的两个对象,所以在没有覆盖equals(Object)方法的情况F,equals(Object)与“=”一样,比较的是引用。相比“=运算符,equals(Object)方法的特殊之处就在于它可以被覆盖,所以可以通过覆盖这个方法让它不是比较引用而是比较对象的属性。例如String类的equals方法是用于比较两个独立对象的内容是否相同,即堆中的内容是否相同。例如,对于下面的代码:Stringsl=newString(HelIo);Strings2三newString(*Hello*);两条new语句在堆中创建了两个对象,然后用si、s2这两个变量分别指向这两个对象,这是

11、两个不同的对象,它们的首地址是不同的,即SI和s2中存储的数值是不相同的,所以,表达式a=b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。如果一个类没有实现equals方法,那么它将继承ObjeCt类的equals方法,Object类的equals方法的实现代码如卜丁booleanequals(Objecto)returnthis=o;)通过以上例子可以说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用“=”运算符,也是在比较两个变量指向的时象是否为同对象,此时使用equals方法和使用“

12、=”会得到同样的结果,如果比较的是两个独立的对象则总返IUlfalse。如果编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么必须覆盖equals方法,由开发人员自己写代码来决定在什么情况即可认为两个对象的内容是相同的。3)hashCode()方法是从ObjeCl类中继承过来的,它也用来鉴定两个对象是否相等。Object类中的hashCode()方法返回对象在内存中地址转换成的一个int值,所以如果没有重写hashCode()方法,任何对象的hashCode()方法都是不相等的。虽然equals方法也是用来判断两个对象是否相等的,但此二者也有区别的。一般来讲,equals方法是给用

13、户调用的,如果需要判断两个对象是否相等,可以重写equals方法,然后在代码中调用,就可以判断它们是否相等/0对于hashCode()方法,用户一般不会去调用它,例如在HaShMaP中,由于key是不可以重复的,它在判断key是否重复的时候就判断了hashCode()这个方法,而且也用到了equals方法。此外“不可以重夏”指的是equals和hashCode()只要有一个不等就可以了。所以,hashC。加0相当于是一个对象的编码,就好像文件中的md5,它与CqUaIS方法的不同之处就在于它返回的是int型,比较起来不直观。一般在粗盖equals方法的同时也要覆盖hashCOdCo方法,否则,

14、就会违反Object.hashCode的通用约定,从而导致该类无法与所有基于散列值(hash)的集合类(HaShMap、HaShSet和HaShtable)结合在一起正常运行。hashCode()的返回值和equals方法的关系如F:如果x.equals(y)返回true,即两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的IiashCodeO方法都必须产生同样的整数结果。如果x.equals(y)返回false,即两个对象根据equals。方法比较是不相等的,那么X和y的hashCode()方法的返回值有可能相等,也有可能不等。反过来,hashCode()方法的返回

15、值不等,定能推出equals方法的返回值也不等,而hashC。加0方法的返回值相等,则equals方法的返回值可能相等,也可能不等。6. “V”运算符有何异同?正确答案:“VV”运算符表示左移,左移n位表示原来的值乘2的n次方。经常用来代替乘法操作,例如:一个数m乘以16可以表示为将这个数左移4位(mVV4),由于CPU直接支持位运算,因此位运算比乘法运算的效率高。与右移运算不同的是,左移运算没有有符号与无符号左移,在左移的时候,移除高位的同时再低位补0。以4VV3(4为int型)为例,其运算步骤如下所示:1)把4转换为二进制数字OOoo0000000000000000000000000100

16、2)把该数字的高三位移走,同时其他位向左移动3位。3)在最低位补3个零。最终结果为OOOO0000000000000000000000100000,对应的十进制数为32。与右移运算符相同的是,当进行左移运算时,如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。例如对int型移动33位,实际上只移动了33%32=1位。7. Java程序初始化的顺序是怎样的?正确答案:在JaVa语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建时象。JaVa程序的初始化一般遵循以下3个原则(优先级依次递减):静态对象(变量)优先

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > Java

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!