程序员面试之九阴真经2586.docx





《程序员面试之九阴真经2586.docx》由会员分享,可在线阅读,更多相关《程序员面试之九阴真经2586.docx(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序员面试之九阴真经谈谈finnal, finaally, finnalizze的区别别: finaal:修饰符(关关键字)如如果一个类类被声明为为finaal,意味味着它不能能再派生出出新的子类类,不能作作为父类被被继承。因因此一个类类不能既被被声明为 absttractt的,又被被声明为ffinall的。将变变量或方法法声明为ffinall,可以保保证它们在在使用中不不被改变。被被声明为ffinall的变量必必须在声明明时给定初初值,而在在以后的引引用中只能能读取,不不可修改。被被声明为ffinall的方法也也同样只能能使用,不不能重载 finaally:再异异常处理时时提供 ffinal
2、lly 块块来执行任任何清除操操作。如果果抛出一个个异常,那那么相匹配配的 caatch 子句就会会执行,然然后控制就就会进入 finaally 块(如果果有的话)。 finaalizee:方法法名。Jaava 技技术允许使使用 fiinaliize() 方法在在垃圾收集集器将对象象从内存中中清除出去去之前做必必要的清理理工作。这这个方法是是由垃圾收收集器在确确定这个对对象没有被被引用时对对这个对象象调用的。它它是在 OObjecct 类中中定义的,因因此所有的的类都继承承了它。子子类覆盖 finaalizee() 方方法以整理理系统资源源或者执行行其他清理理工作。ffinallize() 方
3、法法是在垃圾圾收集器删删除对象之之前对这个个对象调用用的。Anonyymouss Innner CClasss (匿名名内部类) 是否可可以exttendss(继承)其它类,是是否可以iimpleementts(实现现)intterfaace(接接口):匿名的内内部类是没没有名字的的内部类。不不能exttendss(继承) 其它类类,但一个个内部类可可以作为一一个接口,由由另一个内内部类实现现。&和&的的区别: &是位运运算符。&是布尔尔逻辑运算算符。HashMMap和HHashttablee的区别:都属于MMap接口口的类,实实现了将惟惟一键映射射到特定的的值上。 HashhMap 类没有分
4、分类或者排排序。它允允许一个 nulll 键和多多个 nuull 值值。 Haashtaable 类似于 HashhMap,但但是不允许许 nulll 键和和 nulll 值。它它也比 HHashMMap 慢慢,因为它它是同步的的。Colleectioon 和 Colllectiions的的区别:Colllectiions是是个javva.uttil下的的类,它包包含有各种种有关集合合操作的静静态方法。 Colllectiion是个个javaa.utiil下的接接口,它是是各种集合合结构的父父接口。GC是什么么? 为什什么要有GGC? (基础): GC是垃垃圾收集器器。Javva 程序序员不用
5、担担心内存管管理,因为为垃圾收集集器会自动动进行管理理。要请求求垃圾收集集,可以调调用下面的的方法之一一: Syystemm.gc() Ruuntimme.geetRunntimee().ggc()。Strinng s = neew Sttringg(xyyz);创建了几几个Strring Objeect:两个对象象,一个是是“xyxx”,一个个是指向“xxyx”的的引用对象象s。Math.rounnd(111.5)等等於多少? Matth.roound(-11.5)等於於多少: Mathh.rouund(111.5)返回(llong)112,Maath.rroundd(-111.5)返返回(
6、loong)-11。shortt s1 = 1; s1 = s11 + 11;有什么么错? sshortt s1 = 1; s1 += 11;有什么么错: shorrt s11 = 11; s11 = ss1 + 1;有错错,s1是是shorrt型,ss1+1是是int型型,不能显显式转化为为shorrt型。可可修改为ss1 =(shorrt)(ss1 + 1) 。sshortt s1 = 1; s1 += 11正确。sleepp() 和和 waiit() 有什么区区别: sleeep()方方法是使线线程停止一一段时间的的方法。在在sleeep 时间间间隔期满满后,线程程不一定立立即恢复执执行
7、。这是是因为在那那个时刻,其其它线程可可能正在运运行而且没没有被调度度为放弃执执行,除非非(a)“醒醒来”的线线程具有更更高的优先先级 (bb)正在运运行的线程程因为其它它原因而阻阻塞。 wwait()是线程程交互时,如如果线程对对一个同步步对象x 发出一个个waitt()调用用,该线程程会暂停执执行,被调调对象进入入等待状态态,直到被被唤醒或等等待时间到到。数组有没有有lenggth()这个方法法? Sttringg有没有llengtth()这这个方法:数组没有有lenggth()这个方法法,有leengthh的属性。 Striing有有有lenggth()这个方法法。Overlload和和
8、Overrridee的区别。OOverlloadeed的方法法是否可以以改变返回回值的类型型: 方法的重重写Oveerridding和和重载Ovverlooadinng是Jaava多态态性的不同同表现。重重写Oveerridding是是父类与子子类之间多多态性的一一种表现,重重载Oveerloaadingg是一个类类中多态性性的一种表表现。如果果在子类中中定义某方方法与其父父类有相同同的名称和和参数,我我们说该方方法被重写写 (Ovverriidingg)。子类类的对象使使用这个方方法时,将将调用子类类中的定义义,对它而而言,父类类中的定义义如同被“屏屏蔽”了。如如果在一个个类中定义义了多个同
9、同名的方法法,它们或或有不同的的参数个数数或有不同同的参数类类型,则称称为方法的的重载(OOverlloadiing)。OOverlloadeed的方法法是可以改改变返回值值的类型。Set里的的元素是不不能重复的的,那么用用什么方法法来区分重重复与否呢呢? 是用用=还是是equaals()? 它们们有何区别别:Set里里的元素是是不能重复复的,那么么用iteeratoor()方方法来区分分重复与否否。equuals()是判读读两个Seet是否相相等。 eequalls()和和=方法法决定引用用值是否指指向同一对对象equuals()在类中中被覆盖,为为的是当两两个分离的的对象的内内容和类型型相
10、配的话话,返回真真值。给我一个你你最常见到到的runntimee excceptiion: AritthmetticExxcepttion, ArrraySttoreEExcepptionn, BuufferrOverrflowwExceeptioon, BBuffeerUndderfllowExxcepttion, CannnotRRedoEExcepptionn, CaannottUndooExceeptioon, CClasssCasttExceeptioon, CCMMExxcepttion, ConncurrrentMModifficattionEExcepptionn, DOOME
11、xcceptiion, EmpttyStaackExxcepttion, IlllegallArguumenttExceeptioon, IIlleggalMoonitoorStaateExxcepttion, IlllegallPathhStatteExcceptiion, IlleegalSStateeExceeptioon, IImagiingOppExceeptioon, IIndexxOutOOfBouundsEExcepptionn, MiissinngRessourcceExcceptiion, NegaativeeArraaySizzeExcceptiion, NoSuuchE
12、llemenntExcceptiion, NulllPoinnterEExcepptionn, PrrofilleDattaExcceptiion, ProvviderrExceeptioon, RRasteerForrmatEExcepptionn, SeecuriityExxcepttion, SysstemEExcepptionn, UnndecllareddThroowablleExcceptiion, UnmoodifiiableeSetEExcepptionn, UnnsuppporteedOpeeratiionExxcepttion。errorr和excceptiion有什什么区
13、别: erroor 表示示恢复不是是不可能但但很困难的的情况下的的一种严重重问题。比比如说内存存溢出。不不可能指望望程序能处处理这样的的情况。 exceeptioon 表示示一种设计计或实现问问题。也就就是说,它它表示如果果程序运行行正常,从从不会发生生的情况。List, Sett, Maap是否继继承自Coollecctionn接口: Listt,Sett是。Map不不是。abstrract classs和innterfface有有什么区别别:声明明方法的存存在而不去去实现它的的类被叫做做抽象类(aabstrract classs),它它用于要创创建一个体体现某些基基本行为的的类,并为为该类
14、声明明方法,但但不能在该该类中实现现该类的情情况。不能能创建abbstraact 类类的实例。然然而可以创创建一个变变量,其类类型是一个个抽象类,并并让它指向向具体子类类的一个实实例。不能能有抽象构构造函数或或抽象静态态方法。AAbstrract 类的子类类为它们父父类中的所所有抽象方方法提供实实现,否则则它们也是是抽象类为为。取而代代之,在子子类中实现现该方法。知知道其行为为的其它类类可以在类类中实现这这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static
15、final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。接口是否可可继承接口口? 抽象象类是否可可实现(iimpleementts)接口口? 抽象象类是否可可继承实体体类(cooncreete cclasss):接口口可以继承承接口。抽抽象类可以以实现(iimpleement
16、ts)接口口,抽象类类是否可继继承实体类类,但前提提是实体类类必须有明明确的构造造函数。启动一个线线程是用rrun()还是sttart():启动动一个线程程是调用sstartt()方法法,使线程程所代表的的虚拟处理理机处于可可运行状态态,这意味味着它可以以由JVMM调度并执执行。这并并不意味着着线程就会会立即运行行。runn()方法法可以产生生必须退出出的标志来来停止一个个线程。构造器Coonstrructoor是否可可被oveerridde:构造造器Connstruuctorr不能被继继承,因此此不能重写写Overrridiing,但但可以被重重载Oveerloaadingg。try 里有一
17、一个retturn语语句,那么么紧跟在这这个tryy后的fiinallly 里的coode会不不会被执行行,什么时时候被执行行,在reeturnn前还是后后:会执执行,在rreturrn前执行行。两个对象值值相同(xx.equuals(y) = trrue),但但却可有不不同的haash ccode,这这句话对不不对:不对对,有相同同的hassh coode。当一个对象象被当作参参数传递到到一个方法法后,此方方法可改变变这个对象象的属性,并并可返回变变化后的结结果,那么么这里到底底是值传递递还是引用用传递:是值值传递。JJava 编程语言言只由值传传递参数。当当一个对象象实例作为为一个参数数被
18、传递到到方法中时时,参数的的值就是对对该对象的的引用。对对象的内容容可以在被被调用的方方法中改变变,但对象象的引用是是永远不会会改变的。swticch是否能能作用在bbyte上上,是否能能作用在llong上上,是否能能作用在SStrinng上:swwitchh(exppr1)中中,exppr1是一一个整数表表达式。因因此传递给给 swiitch 和 caase 语语句的参数数应该是 int、 shorrt、 cchar 或者 bbyte。llong,striing 都都不能作用用于swttich。编程题: 写一个SSinglletonn出来:Siingleeton模模式主要作作用是保证证在Ja
19、vva应用程程序中,一一个类Cllass只只有一个实实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。public class Singleton private Singleton() /在自己内部定义自己一个实例,是不是很奇怪? /注意这是private 只供内部调用 private static Singleton instance = new Singleton(); /这里提
20、供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() return instance; 第二种形式:public class Singleton private static Singleton instance = null; public static synchronized Singleton getInstance() /这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 /使用时生成实例,提高了效率! if (instance=null) instancenew Singleton(); retu
21、rn instance; 其他形式:定义一个类,它的构造函数为private的,所有方法为static的。一般认为第一种形式要更加安全些。Hashttablee和HasshMapp的区别:Haashtaable继继承自Diictioonaryy类,而HHashMMap是JJava11.2引进进的Mapp intterfaace的一一个实现 HaashMaap允许将将nulll作为一个个entrry的keey或者vvaluee,而Haashtaable不不允许 还有就就是,HaashMaap把Haashtaable的的conttainss方法去掉掉了,改成成conttainssvaluue和co
22、ontaiinsKeey。因为为conttainss方法容易易让人引起起误解。 最大大的不同是是,Hasshtabble的方方法是Syynchrronizze的,而而HashhMap不不是,在 多个线程程访问Haashtaable时时,不需要要自己为它它的方法实实现同步,而而HashhMap 就必须为为之提供外外同步。 Hashhtablle和HaashMaap采用的的hashh/rehhash算算法都大概概一样,所所以性能不不会有很大大的差异作用域puublicc,priivatee,prootectted,以以及不写时时的区别: 作用域 当前类 同一paackagge 子孙孙类 其他他pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 面试 九阴真经 2586

限制150内