还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
常考面试题Java什么是虚拟机?为什么被称作是平台无关的编程语言”?参考答案Java Java虚拟机是一个可以执行字节码的虚拟机进程源文件被编译成能被虚拟Java Java Java Java机执行的字节码文件被设计成允许应用程序可以运行在随意的平台,而不须要程序员为每一个平台单独重写或Java者是重新编译虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性Java和的区分是什么?JDK JRE参考答案运行时环境是将要执行程序的虚拟机它同时也包含了执行须要Java JREJava Java applet的阅读器插件开发工具包是完整的软件开发包,包含了编译器和其他Java JDKJava JRE,的工具比如调试器,可以让开发者开发、编译、执行应用程序JavaDoc,Java Java关键字是什么意思?中是否可以覆盖一个或者是static”Java overrideprivate的方法?static参考答案关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的状况下被访“static”问中方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而方法是编译Java static static时静态绑定的方法跟类的任何实例都不相关,所以概念上不适用static是否可以在环境中访问非变量?static static参考答案变量在中是属于类的,它在全部的实例中的值是一样的当类被虚拟机载入static Java Java的时候,会对变量进行初始化假如你的代码尝试不用实例来访问非的变量,编译staticstatic器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上支持的数据类型有哪些?什么是自动拆装箱?Java参考答案语言支持的种基本数据类型是Java8byte shortint longfloat doubleboolean char关键字用来在程序中明确的抛出异样,相反,语句用来表明方法不能处理的异样throw throws每一个方法都必须要指定哪些异样不能处理,所以方法的调用者才能够确保处理可能发生的异样,多个异样是用逗号分隔的异样处理完成以后,对象会发生什么变更?Exception参考答案对象会在下一个垃圾回收过程中被回收掉Exception代码块和方法有什么区分?finally finalize参考答案无论是否抛出异样,代码块都会执行,它主要是用来释放应用占用的资源方法finally finalizeQ是类的一个方法,它是在对象被垃圾回收之前由虚拟机来调用的Object protectedJava小应用程序Java Applet什么是Applet参考答案是能够被包含在页面中并且能被启用了的客户端阅读器执行的程序java appletHTML java主要用来创建动态交互的应用程序Applet web说明一下的生命周期Applet参考答案可以经验下面的状态applet每次被载入的时候都会被初始化Init起先执行Start appleto结束执行Stop appleto卸载之前,做最终的清理工作Destroy applet当被载入的时候会发生什么?applet参考答案首先,创建限制类的实例,然后初始化最终起先运行applet applet,和一般的应用程序有什么区分?Applet Java参考答案是运行在启用了的阅读器中,应用程序是可以在阅读器之外运行的独立的applet javaJava Java程序但是,它们都须要有虚拟机Java进一步来说,应用程序须要一个有特定方法签名的函数来起先执行不Java mainJava applet须要这样的函数来起先执行最终,一般会运用很严格的平安策略,应用一般运用比较宽松的平安策略Java applet Java有哪些限制条件Javaapplet参考答案主要是由于平安的缘由,给施加了以下的限制applet不能够载入类库或者定义本地方法applet不能在宿主机上读写文件applet不能读取特定的系统属性applet不能发起网络连接,除非是跟宿主机applet不能够开启宿主机上其他任何的程序applet什么是不受信任的applet参考答案不受信任的是不能访问或是执行本地系统文件的默认状况下,全部下载的appletJavaapplet,都是不受信任的applet从网络上加载的和从本地文件系统加载的有什么区分?applet applet参考答案当是从网络上加载的时候,是由类加载器载入的,它受平安管理器applet applet applet applet的限制当是从客户端的本地磁盘载入的时候,是由文件系统加载器载入的applet applet从文件系统载入的允许在客户端读文件,写文件,加载类库,并且也允许执行其他程序,applet但是,却通不过字节码校验类力口载器是什么?它会做哪些工作?applet参考答案当是从网络上加载的时候,它是由类加载器载入的类加载器有自己的名称applet appletjava空间等级结构类加载器会保证来自文件系统的类有唯一的名称空间,来自网络资源的类有唯一的名称空间当阅读器通过网络载入的时候,的类被放置于和的源相关联的私有的名称applet appletapplet空间中然后,那些被类加载器载入进来的类都是通过了验证器验证的验证器会检查类文件格式是否遵守语言规范,确保不会出现堆栈溢出或者下溢传Java stackoverflow underflow,递给字节码指令的参数是正确的平安管理器是什么?它会做哪些工作?applet参考答案平安管理器是给施加限制条件的一种机制阅读器可以只有一个平安管理器平appletapplet安管理器在启动的时候被创建,之后不能被替换覆盖或者是扩展弹出式选择菜单和列表有什么区分Choice List参考答案是以一种紧凑的形式展示的,须要下拉才能看到全部的选项中一次只能选中Choice Choice一个选项同时可以有多个元素可见,支持选中一个或者多个元素List什么是布局管理器?参考答案布局管理器用来在容器中组织组件滚动条和滚动面板有什么区分?Scrollbar JScrollPane参考答案是一个组件,不是容器而是容器自己处理滚动事务Scrollbar ScrollPaneScrollPane哪些的方法是线程平安的?Swing参考答案只有个线程平安的方法3repaint,revalidate,and invalidate说出三种支持重绘的组件painting参考答案和支持重绘Canvas,Frame,Panel,Applet什么是裁剪clipping参考答案限制在一个给定的区域或者形态的绘图操作就做裁剪和的区分是什么?Menuitem CheckboxMenultem参考答案类继承自类,支持菜单选项可以选中或者不选中CheckboxMenidtem Menultem边缘布局里面的元素是如何布局的?BorderLayout参考答案里面的元素是依据容器的东西南北中进行布局的BorderLayout网格包布局里面的元素是如何布局的?GridBagLayout参考答案里面的元素是依据网格进行布局的不同大小的元素可能会占据网格的多于GridBagLayout1行或一列因此,行数和列数可以有不同的大小和有什么区分?Window Frame参考答案类继承了类,它定义了一个可以有菜单栏的主应用窗口Frame Window裁剪和重绘有什么联系clipping repainting参考答案当窗口被重绘线程进行重绘的时候,它会把裁剪区域设置成须要重绘的窗口的区域AWT事务监听器接口门和事务适配器有什么关event-listene interfaceevent-adapter系?参考答案事务监听器接口定义了对特定的事务,事务处理器必须要实现的方法事务适配器给事务监听器接口供应了默认的实现组件如何来处理它自己的事务?GUI参考答案组件可以处理它自己的事务,只要它实现相对应的事务监听器接口,并且把自己作为事务GUI监听器的布局管理器比传统的窗口系统有哪些优势?Java参考答案运用布局管理器以一种一样的方式在全部的窗口平台上摆放组件因为布局管理器不会和Java组件的肯定大小和位置相绑定,所以他们能够适应跨窗口系统的特定平台的不同的组件运用了哪种设计模式?Java Swing参考答案中的组件运用了视图-模型-限制器设计模式Java SwingMVC什么是JDBC参考答案是允许用户在不同数据库之间做选择的一个抽象层允许开发者用写数据JDBC JDBCJAVA库应用程序,而不须要关切底层特定数据库的细微环节说明下驱动在中的角色Driver JDBC参考答案驱动供应了特定厂商对接口类的实现,驱动必须要供应包下面这些JDBC JDBCAPI java.sql类的实现和Connection,Statement,PreparedStatement^allableStatement,ResultSet Driver方法有什么作用?Class.forName参考答案初始化参数指定的类,并且返回此类对应的对象Class比有什么优势?参考答案PreparedStatement Statement是预编译的,因此,性能会更好同时,不同的查询参数值,PreparedStatements可以重用PreparedStatement什么时候运用用来打算的方法是什么?CallableStatement CallableStatement参考答案用来执行存储过程存储过程是由数据库存储和供应的存储过程可以接受CallableStatement输入参数,也可以有返回结果特别激励运用存储过程,因为它供应了平安性和模块化打算一个的方法是CallableStatementCallableStament.prepareCall;数据库连接池是什么意思?参考答案像打开关闭数据库连接这种和数据库的交互可能是很费时的,尤其是当客户端数量增加的时候,会消耗大量的资源,成本是特别高的可以在应用服务器启动的时候建立许多个数据库连接并维护在一个池中连接恳求由池中的连接供应在连接运用完毕以后,把连接归还到池中,以用于满意将来更多的恳求什么是RMI参考答案远程方法调用是对远程过程调用供应的面对对象的等价形式,JavaJavaRMI JavaAPI RPC支持干脆传输序列化的对象和分布式垃圾回收远程方法调用可以看做是激活远程正在运Java行的对象上的方法的步骤对调用者是位置透亮的,因为调用者感觉方法是执行在本地运RMI行的对象上的看下的一些留意事项RMI体系结构的基本原则是什么?RMI参考答案体系结构是基于一个特别重要的行为定义和行为实现相分别的原则允许定义行为的RMI RMI代码和实现行为的代码相分别,并且运行在不同的上JVM体系结构分哪几层?RMI参考答案体系结构分以下几层RMI存根和骨架层这一层对程序员是透亮的,它主要负责拦截客户端发Stub andSkeleton layer出的方法调用恳求,然后把恳求重定向给远程的服务RMI远程引用层体系结构的其次层用来解析客户端对服务端远程Remote ReferenceLayer RMI对象的引用这一层解析并管理客户端对服务端远程对象的引用连接是点到点的传输层这一层负责连接参加服务的两个这一层是建立在网络上机器Transport layerJVM间的连接之上的它供应了基本的连接服务,还有一些防火墙穿透策略TCP/IP中的远程接口扮演了什么样的角色参考答案RMI RemoteInterface远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口远程对象必须要干脆或者是间O接实现远程接口实现了远程接口的类应当声明被实现的远程接口,给每一个远程对象定义构造函数,给全部远程接口的方法供应实现类扮演了什么样的角色?参考答案类用来存储和获得在远程对象注册表里面的远程对象的引用类的每一个方法接收一Naming个格式的对象作为它的参数URL String的绑定是什么意思?RMI Binding参考答案绑定是为了查询找远程对象而给远程对象关联或者是注册以后会用到的名称的过程远程对象可以运用类的或者方法跟名称相关联Naming bind rebind类的和方法有什么区分?Naming bindrebind参考答案方法负责把指定名称绑定给远程对象,方法负责把指定名称重新绑定到一个新的bindrebind远程对象假如那个名称已经绑定过了,从前的绑定会被替换掉让程序能正确运行有哪些步骤?RMI参考答案为了让程序能正确运行必须要包含以下几个步骤RMI编译全部的源文件运用生成rmic stubo启动rmiregistryo启动服务器RMI运行客户端程序的扮演了什么样的角色?RMI stub参考答案远程对象的扮演了远程对象的代表或者代理的角色调用者在本地上调用方法,它负stub stub责在远程对象上执行方法当的方法被调用的时候,会经验以下几个步骤初始化到包含stub了远程对象的的连接JVM序列化参数到远程的JVM等待方法调用和执行的结果反序列化返回的值或者是方法没有执行胜利状况下的异样把值返回给调用者什么是分布式垃圾回收它是如何工作的DGC参考答案叫做分布式垃圾回收运用来做自动垃圾回收因为包含了跨虚拟机的远DGC RMIDGC RMI程对象的引用,垃圾回收是很困难的运用引用计数算法来给远程对象供应自动内存管理DGC什么是分布式垃圾回收它是如何工作的?DGC参考答案叫做分布式垃圾回收运用来做自动垃圾回收因为包含了跨虚拟机的远DGC RMIDGC RMI程对象的引用,垃圾回收是很困难的运用引用计数算法来给远程对象供应自动内存管理DGC中运用平安管理器的目的是什么?参考答案RMI RMIRMISecurityManager运用下载好的代码供应可被应用程序运用的平安管理器假如没有RMISecurityManager RMI设置平安管理器,的类加载器就不会从远程下载任何的类RMI说明下和Marshalling demarshallingo参考答案当应用程序希望把内存对象跨网络传递到另一台主机或者是长久化到存储的时候,就必须要把对象在内存里面的表示转化成合适的格式这个过程就叫做反之就是Marshalling,demarshallingo说明下和参考答案Serialization Deserialization0供应了一种叫做对象序列化的机制,他把对象表示成一连串的字节,里面包含了对象的数Java据,对象的类型信息,对象内部的数据的类型信息等等因此,序列化可以看成是为了把对象存储在磁盘上或者是从磁盘上读出来并重建对象而把对象扁平化的一种方式反序列化是把对象从扁平状态转化成活动对象的相反的步骤Servlet什么是Servlet参考答案是用来处理客户端恳求并产生动态网页内容的类主要是用来处理或者是Servlet JavaServlet存储表单提交的数据,产生动态内容,在无状态的协议下管理状态信息HTML HTTP说一下的体系结构Servlet参考答案全部的都必须要实现的核心的接口是每一个都必须要干脆或者是间接实现这Servlet Servlet个接口,或者是继承或者最终,运用多线程可以并行的为多个恳求服务Servlet和有什么区分?Applet Servlet参考答案是运行在客户端主机的阅读器上的客户端程序而是运行在服务器上Applet JavaServlet web的服务端的组件可以运用用户界面类,而没有用户界面,相反,是等待applet Servlet Servlet客户端的恳求,然后为恳求产生响应HTTP和有什么区分?GenericServlet HttpServlet参考答案是一个通用的协议无关的它实现了和接口继GenericServlet Servlet,Servlet ServletConfig承自的应当要覆盖方法最终,为了开发一个能用在网页上GenericServlet Servlet service服务于运用协议恳求的你的必须要继承自这里有HTTP Servlet,Servlet HttpServlet Servlet的例子说明下的生命周期Servlet参考答案对每一个客户端的恳求,引擎载入调用它的方法,完成的初始化Servlet Servlet,irdt Servlet然后,对象通过为每一个恳求单独调用方法来处理全部随后来自客户端的恳Servletservice求,最终,调用译者注这里应当是而不是的方法把Servlet Servletserver destroyServlet删除掉方法和方法有什么区分?doGet doPost参考答案方法会把名值对追加在恳求的后面因为对字符数目有限制,进而限doGet GETURL URL制了用在客户端恳求的参数值的数目并且恳求中的参数值是可见的,因此,敏感信息不能用这种方式传递方法通过把恳求参数值放在恳求体中来克服方法的限制,因此,可以发doPOST POSTGET送的参数的数目是没有限制的最终,通过恳求传递的敏感信息对外部客户端是不行见POST的什么是应用程序?Web参考答案应用程序是对或者是应用服务器的动态扩展有两种类型的应用面对表现的Web Web Web和面对服务的面对表现的应用程序会产生包含了许多种标记语言和动态内容的交互的Web页面作为对恳求的响应而面对服务的应用实现了服务的端点一web WebWeb endpointo般来说,一个应用可以看成是一组安装在服务器名称空间的特定子集下面的Web URLServlet的集合什么是服务端包含Server SideInclude参考答案服务端包含是一种简洁的说明型服务端脚本语言,大多数时候仅用在上,用SSI Webservlet标签嵌入进来最常用的场景把一个或多个文件包含到服务器的一个页面中当SSI WebWeb阅读器访问页面的时候,服务器会用对应的产生的文原来替换页面中WebWebservlet Web的标签servlet什么是链参考答案Servlet ServletChaining链是把一个的输动身送给另一个的方法其次个的输出可以发ServletServletServletServlet送给第三个依次类推链条上最终一个负责把响应发送给客户端Servlet,Servlet如何知道是哪一个客户端的机器正在恳求你的Servlet参考答案类可以找出客户端机器的地址或者是主机名方法获得客ServletRequest IPgetRemoteAddr户端主机的地址,可以获得主机名看下这里的例子IP getRemoteHost响应的结构是怎么样的?HTTP参考答案响应由三个部分组成HTTP状态码描述了响应的状态可以用来检查是否胜利的完成了恳求恳求失败的Status Code状况下,状态码可用来找出失败的缘由假如没有返回状态码,默认会返回胜利的状态Servlet码HttpServletResponse.SC_OKo头部它们包含了更多关于响应的信息比如头部可以指定认为响应HTTP HTTPHeader过期的过期日期,或者是指定用来给用户平安的传输实体内容的编码格式如何在中检Serlet索的头部看这里HTTP主体它包含了响应的内容它可以包含代码,图片,等等主体是由传输在Body HTMLHTTP消息中紧跟在头部后面的数据字节组成的什么是和有什么区分?cookie session cookie参考答案是服务器发送给阅读器的一块信息阅读器会在本地文件中给每一个服务器cookie WebWeb存储以后阅读器在给特定的服务器发恳求的时候,同时会发送全部为该服务器cookie Web存储的下面列出了和的区分cookie sessioncookie无论客户端阅读器做怎么样的设置,都应当能正常工作客户端可以选择禁用但sessioncookie,是,仍旧是能够工作的,因为客户端无法禁用服务端的session session在存储的数据量方面和也是不一样的能够存储随意的对象,session cookiessession Java只能存储类型的对象cookie String阅读器和通信运用的是什么协议?Servlet参考答案阅读器和通信运用的是协议Servlet HTTP什么是隧道?HTTP参考答案隧道是一种利用或者是把多种网络协议封装起来进行通信的技术因此,HTTP HTTP HTTPS协议扮演了一个打通用于通信的网络协议的管道的包装器的角色把其他协议的恳求掩HTTP盖成的恳求就是隧道HTTPHTTP和方法有什么区分?sendRedirect forward参考答案方法会创建一个新的恳求,而方法只是把恳求转发到一个新的目标上sendRedirect forward重定向以后,之前恳求作用域范围以内的对象就失效了,因为会产生一个新的恳求,redirect而转发以后,之前恳求作用域范围以内的对象还是能访问的一般认为forwarding比要慢sendRedirect forward什么是编码和解码?URL URL参考答案编码是负责把里面的空格和其他的特别字符替换成对应的十六进制表示,反之就是URL URL解码什么是页面?JSP参考答案页面是一种包含了静态数据和元素两种类型的文本的文本文档静态数据可以用任何JSP JSP基于文本的格式来表示,比如或者是一种混合了静态内容和动态产生的内HTML XML JSP容的技术这里看下的例子JSP恳求是如何被处理的?JSP参考答案阅读器首先要恳求一个以扩展名结尾的页面,发起恳求,然后,服务器读取这个.jsp JSP Web恳求,运用编译器把页面转化成一个类须要留意的是,只有当第一次恳求JSP JSP Servlet页面或者是文件发生变更的时候文件才会被编译,然后服务器调用类,处理JSP JSPservlet阅读器的恳求一旦恳求执行结束,会把响应发送给客户端这里看下如何在中获servlet JSP得恳求参数有什么优点?JSP参考答案下面列出了运用的优点JSP页面是被动态编译成的,因此,开发者可以很简洁的更新呈现代码JSPServlet页面可以被预编译JSP页面可以很简洁的和静态模板结合,包括或者也可以很简洁的和产生动态内JSP HTMLXML,容的代码结合起来开发者可以供应让页面设计者以类格式来访问的自定义的标签库XMLJSP开发者可以在组件层做逻辑上的变更,而不须要编辑单独运用了应用层逻辑的页面什么是指令中有哪些不同类型的指令?参考答案JSP Directive JSP是当页面被编译成的时候,引擎要处理的指令用来设置DirectiveJSPServlet JSPDirective页面级别的指令,从外部文件插入数据,指定自定义的标签库是定义在自动装Directive v%@箱是编译器在基本数据类型和对应的对象包装类型之间做的一个转化比如把转化Java int成转化成等等反之就是自动拆箱Integer,double Double,中的方法覆盖和方法重载是什么意思?参考答案Java OverridingOverloading中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的状况Java与此相对,方法覆盖是说子类重新定义了父类的方法方法覆盖必需有相同的方法名,参数列表和返回类型覆盖者可能不会限制它所覆盖的方法的访问中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?参考答Java案当新对象被创建的时候,构造函数会被调用每一个类都有构造函数在程序员没有给类供应构造函数的状况下,编译器会为这个类创建一个默认的构造函数Java中构造函数重载和方法重载很相像可以为一个类创建多个构造函数每一个构造函数必Java需有它自己唯一的参数列表不支持像中那样的复制构造函数,这个不同点是因为假如你不自己写构造函数的状况Java C++下,不会创建默认的复制构造函数Java支持多继承么?Java参考答案中类不支持多继承,只支持单继承即一个类只有一个父类但是中的接口支持多Java java继承,,即一个子接口可以有多个父接口接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能接口和抽象类的区分是什么?参考答案供应和支持创建抽象类和接口它们的实现有共同点,不同点在于Java接口中全部的方法隐含的都是抽象的而抽象类则可以同时包含抽象和非抽象的方法类可以实现许多个接口,但是只能继承一个抽象类类可以不实现抽象类和接口声明的全部方法,当然,在这种状况下,类也必需得声明成是抽象的抽象类可以在不供应接口方法实现的状况下实现接口接口中声明的变量默认都是的抽象类可以包含非的变量Java finalfinal接口中的成员函数默认是的抽象类的成员函数可以是或者是Java publicprivate,protectedpublico接口是肯定抽象的,不行以被实例化抽象类也不行以被实例化,但是,假如它包含方法main的话是可以被调用的也可以参考中抽象类和接口的区分JDK8什么是值传递和引用传递参考答案和%>之间的下面列出了不同类型的Directive包含指令用来包含文件和合并文件内容到当前的页面Include directive页面指令用来定义页面中特定的属性,比如错误页面和缓冲区Page directiveJSP指令用来声明页面中运用的自定义的标签库Taglib什么是动作参考答案JSP JSPaction动作以语法的结构来限制引擎的行为当页面被恳求的时候,动作JSP XMLServlet JSP JSP会被执行它们可以被动态的插入到文件中,重用组件,转发用户到其他的页面,JavaBean或者是给插件产生代码下面列出了可用的动作■当页面被恳Java HTMLjsp:include JSP求的时候包含一个文件找出或者是初始化jsp:useBean-Javabean0设置的属性jsp:setProperty-JavaBean■获得的属性jsp:getProperty JavaBean把恳求转发到新的页面jsp:forward-产生特定阅读器的代码jsp:plugin-什么是参考答案Scriptlets技术中,是嵌入在页面中的一段代码是位于标签内部的全部JSP scriptletJSP Java scriptlet的东西,在标签与标签之间,用户可以添加随意有效的scriplet声明在哪里?参考答案Decalaration声明跟中的变量声明很相像,它用来声明随后要被表达式或者运用的变量添加Javascriptlet的声明必须要用起先和结束标签包起来什么是表达式参考答案Expression【列表很长,可以分上、中、下发布】表达式是服务器把脚本语言表达式的值转化成一个对象,插入到返回给客户JSPWebString端的数据流中表达式是在<%=和%>这两个标签之间定义的隐含对象是什么意思?有哪些隐含对象?参考答案隐含对象是页面中的一些对象,容器让这些对象可以为开发者所运用开JSP JavaJSP Java发者不用明确的声明就可以干脆运用他们隐含对象也叫做预定义变量下面列出了JSPJSP页面中的隐含对象application pagerequest responsesessionexception outconfig pageContext面对对象软件开发的优点有哪些?参考答案代码开发模块化,更易维护和修改代码复用增加代码的牢靠性和敏捷性增加代码的可理解性面对对象编程有许多重要的特性,比如封装,继承,多态和抽象下面的章节我们会逐个分析这些特性封装的定义和好处有哪些?参考答案封装给对象供应了隐藏内部特性和行为的实力对象供应一些能被其他对象访问的方法来变更它内部的数据在当中,有种修饰符和每一种修饰符给其Java3public,private protected他的位于同一个包或者不同包下面对象给予了不同的访问权限下面列出了运用封装的一些好处通过隐藏对象的属性来爱护对象内部的状态提高了代码的可用性和可维护性,因为对象的行为可以被单独的变更或者是扩展禁止对象之间的不良交互提高模块化参考这个文档获得更多关于封装的细微环节和示例多态的定义?参考答案多态是编程语言给不同的底层数据类型做相同的接口展示的一种实力一个多态类型上的操作可以应用到其他类型的值上面继承的定义?参考答案继承给对象供应了从基类获得字段和方法的实力继承供应了代码的重用行,也可以在不修改类的状况下给现存的类添加新特性抽象的定义?抽象和封装的不同点?参考答案抽象是把想法从详细的实例中分别出来的步骤,因此,要依据他们的功能而不是实现细微环节来创建类支持创建只暴漏接口而不包含方法实现的抽象的类这种抽象技术的主要目的Java是把类的行为和实现细微环节分别开抽象和封装是互补的概念一方面,抽象关注对象的行为另一方面,封装关注对象行为的细微环节一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来供应抽象的一种策略值传递是对基本型变量而言的,传递的是该变量的一个副本,变更副本不影响原变量.引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身所以对引用对象进行操作会同时变更原对象.一般认为内的传递都是值传递.Java进程和线程的区分是什么?参考答案进程是执行着的应用程序,而线程是进程内部的一个执行序列一个进程可以有多个线程线程又叫做轻量级进程创建线程有几种不同的方式?你喜爱哪一种?为什么?参考答案有三种方式可以用来创建线程继承类Thread实现接口Runnable应用程序可以运用框架来创建线程池Executor实现接口这种方式更受欢迎,因为这不须要继承类在应用设计中已经继Runnable Thread承了别的对象的状况下,这须要多继承而不支持多继承,只能实现接口同时,线程Java池也是特别高效的,很简洁实现和运用概括的说明下线程的几种可用状态参考答案.新建新创建了一个线程对象1new.可运行线程对象创建后,其他线程比如线程调用了该对象的方2runnablemain start法该状态的线程位可运行线程池中,等待被线程调度选中,获取的运用权F cpu运行可运行状态的线程获得了时间片,执行程序代
3.running runnablecpu timeslice码堵塞堵塞状态是指线程因为某种缘由放弃了运用权,也即让出了
4.block cpucpu短暂停止运行直到线程进入可运行状态,才有机会再次获得timeslice,runnablecpu转到运行状态堵塞的状况分三种timeslice running一.等待堵塞运行的线程执行方法,会把该线程放入等待队歹runningo.wait JVM中U waittingqueue二.同步堵塞运行的线程在获得对象的同步锁时,若该同步锁被别的线程占用,running则会把该线程放入锁池中JVM lockpool三.其他堵塞运行的线程执行或方法,或者发runningThread.sleep longmst.join出了恳求时,二把该线程置为堵塞状态当状态超时、I/O JVMsleep join等待线程终止或者超时、或者处理完毕时,线程重新转入可运行状态I/0runnable.死亡线程、方法执行结束,或者因异样退出了方法,则该线程5dead runmainrun结束生命周期死亡的线程不行再次复生被其他线程唤醛:或者o.notify等待队列锁池o.notifyAllrelease lock会释放锁lock poolormonitorsynchronizedo堂到班标识获取时间片
1、run,main方法结束《七新建o tainmy、异常退出start运行状态2死匚Thread t=new可运行状态»running deadThread...Runnable、时间片用完
1、2Thread.yield待用户馀入用户检入无成ix
2、sleep时束
2./Thread,sleept
2.join、线程结束3t2阻塞状态doesnt releaseanylock ormonitor不会释放锁同步方法和同步代码块的区分是什么?参考答案区分同步方法默认用或者当前类对象作为锁;this class同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;在监视器内部,是如何做线程同步的?程序应当做哪种级别的同步?参Monitor考答案监视器和锁在虚拟机中是一块运用的监视器监视一块同步代码块,确保一次只有一个Java线程执行同步代码块每一个监视器都和一个对象引用相关联线程在获得锁之前不允许执行同步代码什么是死锁deadlock参考答案两个线程或两个以上线程都在等待对方执行完毕才能接着往下执行的时候就发生了死锁结果就是这些线程都陷入了无限的等待中如何确保个线程可以访问个资源同时又不导致死锁?N N参考答案运用多线程的时候,一种特别简洁的避开死锁的方式就是指定获得锁的依次,并强制线程依据指定的依次获得锁因此,假如全部的线程都是以同样的依次加锁和释放锁,就不会出现死锁了集合类框架的基本接口有哪些?Java参考答案集合类接口指定了一组叫做元素的对象集合类接口的每一种详细的实现类都可以选择以它自己的方式对元素进行保存和排序有的集合类允许重复的键,有些不允许集合类供应了一套设计良好的支持对一组对象进行操作的接口和类集合类里面最基JavaJava本的接口有代表一组对象,每一个对象都是它的子元素Collection不包含重复元素的Set Collectiorio有依次的并且可以包含重复元素List collection,可以把键映射到值的对象,键不能重复Map keyvalue为什么集合类没有实现和接口?参考答案Cloneable Serializable克隆或者是序列化的语义和含义是跟详细的实现相关的因此,应当由cloning serialization集合类的详细实现来确定如何被克隆或者是序列化什么是迭代器Iterator参考答案接口供应了许多对集合元素进行迭代的方法每一个集合类都包含了可以返回迭代器实Iterator例的迭代方法迭代器可以在迭代的过程中删除底层集合的元素,但是不行以干脆调用集合的删除,可以通过迭代器的方法删除removeObject Objremove和的区分是什么?Iterator Listiterator参考答案下面列出了他们的区分可用来遍历和集合,但是只能用来遍历Iterator SetList ListiteratorList对集合只能是前向遍历,既可以前向也可以后向Iterator Listiterator实现了接口,并包含其他的功能,比如增加元素,替换元素,获得前一个和Listiterator Iterator后一个元素的索引,等等快速失败和平安失败的区分是什么?参考答案fail-fast fail-safe的平安失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响包下Iterator java.util面的全部的集合类都是快速失败的,而包下面的全部的类都是平安失败的快速失败的迭代器会抛出异样,而平安失败的迭代器恒久不会抛出这样的异样ConcurrentModificationException中的的工作原理是什么?参考答案Java HashMap中的是以键值对的形式存储元素的须要一个函数,Java HashMap key-value HashMaphash它运用和方法来向集合/从集合添加和检索元素当调用方法的时候,hashCode equalsput会计算的值,然后把键值对存储在集合中合适的索引上假如已经存HashMapkeyhash key在了,会被更新成新值的一些重要的特性是它的容量负载因子value HashMapcapacity,load和扩容极限factor thresholdresizing和方法的重要性体现在什么地方?参考答案hashCode equals中的运用和方法来确定键值对的索引,当依据键获得值Java HashMaphashCode equals的时候也会用到这两个方法假如没有正确的实现这两个方法,两个不同的键可能会有相同的值,因此,可能会被集合认为是相等的而且,这两个方法也用来发觉重复元素所以这hash两个方法的实现对的精确性和正确性是至关重要的HashMap和有什么区分?HashMap Hashtable参考答案和都实现了接口,因此许多特性特别相像但是,他们有以下不同HashMap HashtableMap点允许键和值是而不允许键或者值是HashMap null,Hashtable nulL是同步的,而不是因此,更适合于单线程环境,而适Hashtable HashMap HashMap Hashtable合于多线程环境供应了可供应用迭代的键的集合,因此,是快速失败的另一方面,HashMapHashMapHashtable供应了对键的列举Enumeration一般认为是一个遗留的类Hashtable数组和列表有什么区分?什么时候应当运用而不是Array ArrayListArrayArrayList参考答案下面列出了和的不同点Array ArrayList可以包含基本类型和对象类型,只能包含对象类型Array ArrayList大小是固定的,的大小是动态变更的Array ArrayList供应了更多的方法和特性,比如等等ArrayList addAII,removeAII,iterator对于基本类型数据,集合运用自动装箱来削减编码工作量但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢和有什么区分?ArrayList LinkedList参考答案和都实现了接口,他们有以下的不同点ArrayList LinkedListList是基于索引的数据接口,它的底层是数组它可以以时间困难度对元素进行随机ArrayList01访问与此对应,是以元素列表的形式存储它的数据,每一个元素都和它的前一个和LinkedList后一个元素链接在一起,在这种状况下,查找某个元素的时间困难度是0n相对于的插入,添加,删除操作速度更快,因为当元素被添加到集合随意ArrayList,LinkedList位置的时候,不须要像数组那样重新计算大小或者是更新索引比更占内存,因为为每一个节点存储了两个引用,一个指向前LinkedList ArrayList LinkedList一个元素,一个指向下一个元素也可以参考ArrayList vs.LinkedListo和接口是干什么的?列出它们的区分参考答案Comparable Comparator供应了只包含一个方法的接口这个方法可以个给两个对象排Java compareToComparable序详细来说,它返回负数,正数来表明输入对象小于,等于,大于已经存在的对象0,供应了包含和两个方法的接口方法用来给Java compareequals Comparatorcompare两个输入参数排序,返回负数,正数表明第一个参数是小于,等于,大于其次个参数0,equals方法须要一个对象作为参数,它用来确定输入参数是否和相等只有当输入参数也comparator是一个并且输入参数和当前的排序结果是相同的时候,这个方法才返comparator comparator回true什么是优先级队列Java PriorityQueue参考答案是一个基于优先级堆的无界队列,它的元素是依据自然依次排序的PriorityQueue naturalorder在创建的时候,我们可以给它供应一个负责给元素排序的比较器不允许值,PrioiityQueue null因为他们没有自然依次,或者说他们没有任何的相关联的比较器最终,不是线PriorityQueue程平安的,入队和出队的时间困难度是Ologno你了解大符号么?你能给出不同数据结构的例子么?参考答案0big-0notation大符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有0多么好大符号也可用来描述其他的行为,比如内存消耗因为集合类事实上是数据结构,我们一般运用大符号基于时间,内存和性能来选择最好的实现大符号可以对大量数据的性能给0出一个很好的说明如何权衡是运用无序的数组还是有序的数组?参考答案有序数组最大的好处在于查找的时间困难度是而无序数组是有序数组的缺点是Ologn,0n插入操作的时间困难度是因为值大的元素须要往后移动来给新元素腾位置相反,无序数0n,组的插入时间困难度是常量01集合类框架的最佳实践有哪些?Java参考答案依据应用的须要正确选择要运用的集合的类型对性能特别重要,比如假如元素的大小是固定的,而且能事先知道,我们就应当用而不是Array ArrayList有些集合类允许指定初始容量因此,假如我们能估计出存储的元素的数目,我们可以设置初始容量来避开重新计算值或者是扩容hash为了类型平安,可读性和健壮性的缘由总是要运用泛型同时,运用泛型还可以避开运行时的ClassCastExceptiono运用供应的不变类作为的键可以避开为我们自己的类实现JDK immutableclass Map和方法hashCode equals编程的时候接口优于实现底层的集合事实上是空的状况下,返回长度是的集合或者是数组,不要返回0null接口和接口的区分有哪些?参考答案Enumeration Iterator速度是的倍,同寸占用更少的内存但是,远远比Enumeration Iterator20Iterator Enumeration平安,因为其他线程不能够修改正在被遍历的集合里面的对象同时,允许调iterator Iterator用者删除底层集合里面的元素,这对来说是不行能的Enumeration和有什么区分?参考答案HashSet TreeSet是由一个表来实现的,因止匕它的元素是无序的方HashSet hashadd,remove,contains法的时间困难度是01另一方面,是由一个树形的结构来实现的,它里面的元素是有序的因此,TreeSet add,remove,方法的时间困难度是contains Ologn0中垃圾回收有什么目的?什么时候进行垃圾回收?参考答案Java垃圾回收的目的是识别并且丢弃应用不再运用的对象来释放和重用资源和会做什么事情System.gc Runtime.gc参考答案这两个方法用来提示要进行垃圾回收但是,马上起先还是延迟进行垃圾回收是取决于JVM JVM的方法什么时候被调用?析构函数的目的是什么?参考答案finalize finalization垃圾回收器确定回收某对象时,就会运行该对象的方法但是在garbage colectorfinalize Java中很不幸,假如内存总是足够的,那么垃圾回收可能恒久不会进行,也就是说可能恒久filalize不被执行,明显希望它做收尾工作是靠不住的那么原委是做什么的呢?它最主要的finalize用途是回收特别渠道申请的内存程序有垃圾回收器,所以一般状况下内存问题不用程序Java员操劳但有一种调用程序或的工作就JNIJava NativeInterface non-Java CC++,finalize是回收这部分的内存假如对象的引用被置为垃圾收集器是否会马上释放对象占用的内存?参考答案null,不会,在下一个垃圾回收周期中,这个对象将是可被回收的堆的结构是什么样子的?什么是堆中的永久代参考答案Java PermGen space的堆是运行时数据区,全部类的实例和数组都是在堆上安排内存它在启动的时候被JVM JVM创建对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收堆内存是由存活和死亡的对象组成的存活的对象是应用可以访问的,不会被垃圾回收死亡的对象是应用不行访问尚且还没有被垃圾收集器回收掉的对象始终到垃圾收集器把这些对象回收掉之前,他们会始终占据堆内存空间串行收集器和吞吐量收集器的区分是什么?serial throughput参考答案吞吐量收集器运用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序而串行收集器对大多数的小应用在现代处理器上须要也许左右的内存就足够了100M在中,对象什么时候可以被垃圾回收?Java参考答案当对象对当前运用这个对象的应用程序变得不行触及的时候,这个对象就可以被回收了的永久代中会发生垃圾回收么?JVM参考答案垃圾回收不会发生在永久代,假如永久代满了或者是超过了临界值,会触发完全垃圾回收Full假如你细致查看垃圾收集器的输出信息,就会发觉永久代也是被回收的这就是为什么GC正确的永久代大小对避开是特别重要的缘由请参考下从永久代到元数据区Full GCJava8注中已经移除了永久代,新加了一个叫做元数据区的内存区Java8native中的两种异样类型是什么?他们有什么区分?Java参考答案中有两种异样受检查的异样和不受检查的异样不受检查的异样Java checkedunchecked不须要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异样,并且不受检查的异样可以传播到方法或者是构造函数的外面相反,受检查的异样必须要用语句在方法或者是构造函数上声明这里有异样处理的一些小建议throws Java中和有什么区分?Java Exception Error参考答案和都是的子类用于用户程序可以捕获的异样状况ExceptionErrorThrowable Exception定义了不期望被用户程序捕获的异样Error和有什么区分?throw throws参考答案。