
java面试汇总
java面试汇总
Dream_ling
这短短的一生,我们都会失去,不妨大胆一些,爱一个人,攀一座山,追一个梦
展开
-
java必须掌握的技术点--核心篇--(一)
java面试汇总专栏数据存储 MySQL 索引使用的注意事项 索引虽然好处很多,但过多的使用索引可能带来相反的问题,索引也是有缺点的:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT,UPDATE和DELETE。因为更新表时,mysql不仅要保存数据,还要保存一下索引文件 建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在要给大表上建了多种组合索引,索引文件会膨胀很宽 索引只是提高效率的一个方式,如果mysql有大数据量的表,就...原创 2020-08-27 14:09:57 · 384 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(七)
java面试汇总专栏锁机制 说说线程安全问题 线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。在 Java 多线程编程当中,提供了多种实现 Java 线程安全的方式:最简单的方式,使用Synchronization关键字 使用java.util.concurrent.atomic包中的原子类,例如AtomicInteger 使用java.util.concurrent.locks包中的锁 使用线程安全的集合...原创 2020-08-27 10:30:02 · 204 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(六)
java面试汇总专栏线程 说说 CountDownLatch 与 CyclicBarrier 区别 CountDownLatch:一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。 CyclicBarrier :N个线程相互等待,任何一个线程完成之前,所有的线程都必须等待。这样应该就清楚一点了,对于CountDownLatch来说,重点是那个“一个线程”, 是它在等待, 而另外那N的线程在把“某个事情”做完之后可以继续等待,可以终止。而对于CyclicB...原创 2020-06-01 13:31:34 · 260 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(五)
java面试汇总专栏线程 创建线程的方式及实现 1 方式一:创建Thread的子类对象1-1 创建一个线程,继承 Thread,重写run方法public class MyThread extends Thread{ public MyThread(String name){ super(name); } @Override ...原创 2020-03-13 16:54:18 · 303 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(四)
java必须掌握的技术点--基础篇--(一)java必须掌握的技术点--基础篇--(二)java必须掌握的技术点--基础篇--(三)集合 ArrayList 与 Vector 区别 ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到...原创 2019-11-15 17:14:13 · 247 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(三)
java必须掌握的技术点--基础篇--(一)java必须掌握的技术点--基础篇--(二)集合 List、Set、Map的区别 Collection结构图collection里面有什么子类?list和set是实现了collection接口的List:1.可以允许重复的对象。2.可以插入多个null元素。3.是一个有序容器,保持了每个元素的插入顺序,...原创 2019-09-25 17:05:24 · 283 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(二)
java必须掌握的技术点--基础篇--(一)java必须掌握的技术点--基础篇--(三)基本功 HTTP 请求的 GET 与 POST 方式的区别 GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TC...原创 2019-08-02 15:00:26 · 276 阅读 · 0 评论 -
java必须掌握的技术点--基础篇--(一)
java必须掌握的技术点--基础篇--(二)基本功 面向对象的特征 1.抽象定义:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面,抽象只关注对象的哪些属性和行为,并不关注这此行为的细节是什么1.1 研究事物的静态特征(属性)1.2 研究事物的动态特征(方法/函数)1.3 形成结果(类,class)1.4 类和对象相互转变(new)...原创 2019-08-01 19:59:24 · 415 阅读 · 0 评论 -
java每天5道面试题(二十三)
1.什么是JSP动作(JSP action)?JSP动作以XML语法的结构来控制Servlet引擎的行为。当JSP页面被请求的时候,JSP动作会被执行。它们可以被动态的插入到文件中,重用JavaBean组件,转发用户到其他的页面,或者是给Java插件产生HTML代码。下面列出了可用的动作:jsp:include-当JSP页面被请求的时候包含一个文件。jsp:useBean-找出或者是初始化Jav...原创 2018-03-08 16:30:11 · 321 阅读 · 0 评论 -
java每天5道面试题(二十二)
1.什么是URL编码和URL解码?URL编码是负责把URL里面的空格和其他的特殊字符替换成对应的十六进制表示,反之就是解码。2.什么是JSP页面?JSP页面是一种包含了静态数据和JSP元素两种类型的文本的文本文档。静态数据可以用任何基于文本的格式来表示,比如:HTML或者XML。JSP是一种混合了静态内容和动态产生的内容的技术。这里看下JSP的例子。3.JSP请求是如何被处理的?浏览器首...原创 2018-03-07 19:57:00 · 359 阅读 · 0 评论 -
java每天5道面试题(二十一)
1.HTTP响应的结构是怎么样的?HTTP响应由三个部分组成:状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为...原创 2018-03-04 19:27:54 · 306 阅读 · 0 评论 -
java每天5道面试题(二十)
1.doGet()方法和doPost()方法有什么区别?doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息...原创 2018-03-02 09:46:45 · 285 阅读 · 0 评论 -
java每天5道面试题(十九)
1.什么是Servlet?Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。2.说一下Servlet的体系结构。所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这个接口,或者是...原创 2018-02-28 22:36:07 · 259 阅读 · 0 评论 -
java每天5道面试题(十八)
1.RMI的stub扮演了什么样的角色?远程对象的stub扮演了远程对象的代表或者代理的角色。调用者在本地stub上调用方法,它负责在远程对象上执行方法。当stub的方法被调用的时候,会经历以下几个步骤:初始化到包含了远程对象的JVM的连接。序列化参数到远程的JVM。等待方法调用和执行的结果。反序列化返回的值或者是方法没有执行成功情况下的异常。把值返回给调用者。2.什么是分布式垃圾回收(DGC...原创 2018-02-28 09:44:35 · 453 阅读 · 0 评论 -
java每天5道面试题(十七)
1.RMI中的远程接口(Remote Interface)扮演了什么样的角色?远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口。远程对象必须要直接或者是间接实现远程接口。实现了远程接口的类应该声明被实现的远程接口,给每一个远程对象定义构造函数,给所有远程接口的方法提供实现。2.java.rmi.Naming类扮演了什么样的角色?java.rmi.Naming类用来存储和获取在远程对象注...原创 2018-02-27 08:41:11 · 358 阅读 · 0 评论 -
java每天5道面试题(十六)
1.什么时候使用CallableStatement?用来准备CallableStatement的方法是什么?CallableStatement用来执行存储过程。存储过程是由数据库存储和提供的。存储过程可以接受输入参数,也可以有返回结果。非常鼓励使用存储过程,因为它提供了安全性和模块化。准备一个CallableStatement的方法是:CallableStament.prepareCall();...原创 2018-02-08 15:40:56 · 242 阅读 · 0 评论 -
java每天5道面试题(十五)
1.Java的Swing组件使用了哪种设计模式?Java中的Swing组件使用了MVC(视图-模型-控制器)设计模式。2.什么是JDBC?JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不需要关心底层特定数据库的细节。3.解释下驱动(Driver)在JDBC中的角色。JDBC驱动提供了特定厂商对原创 2018-02-07 14:27:58 · 223 阅读 · 0 评论 -
java每天5道面试题(十四)
1.Window和Frame有什么区别?Frame类继承了Window类,它定义了一个可以有菜单栏的主应用窗口。2.裁剪(clipping)和重绘(repainting)有什么联系?当窗口被AWT重绘线程进行重绘的时候,它会把裁剪区域设置成需要重绘的窗口的区域。3.事件监听器接口(event-listener interface)和事件适配器(event-a原创 2018-02-06 20:10:00 · 256 阅读 · 0 评论 -
java每天5道面试题(十三)
1.说出三种支持重绘(painting)的组件。Canvas, Frame, Panel,和Applet支持重绘。2.什么是裁剪(clipping)?限制在一个给定的区域或者形状的绘图操作就做裁剪。3.MenuItem和CheckboxMenuItem的区别是什么?CheckboxMenuItem类继承自MenuItem类,支持菜单选项可以选中或者原创 2018-02-05 20:13:11 · 248 阅读 · 0 评论 -
java每天5道面试题(十二)
1.applet安全管理器是什么?它会做哪些工作?applet安全管理器是给applet施加限制条件的一种机制。浏览器可以只有一个安全管理器。安全管理器在启动的时候被创建,之后不能被替换覆盖或者是扩展。2.弹出式选择菜单(Choice)和列表(List)有什么区别Choice是以一种紧凑的形式展示的,需要下拉才能看到所有的选项。Choice中一次只能选中一个选项。Li原创 2018-02-04 10:29:45 · 1036 阅读 · 2 评论 -
java每天5道面试题(十一)
1.Applet和普通的Java应用程序有什么区别?applet是运行在启用了java的浏览器中,Java应用程序是可以在浏览器之外运行的独立的Java程序。但是,它们都需要有Java虚拟机。进一步来说,Java应用程序需要一个有特定方法签名的main函数来开始执行。Java applet不需要这样的函数来开始执行。最后,Java applet一般会使用很严格的安全策略,Java原创 2018-02-03 11:01:15 · 343 阅读 · 0 评论 -
java每天5道面试题(十)
1.异常处理完成以后,Exception对象会发生什么变化?Exception对象会在下一个垃圾回收过程中被回收掉。2.finally代码块和finalize()方法有什么区别?无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来原创 2018-02-02 20:09:22 · 252 阅读 · 0 评论 -
java每天5道面试题(九)
1.在Java中,对象什么时候可以被垃圾回收?当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。2.JVM的永久代中会发生垃圾回收么?垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是为什么正确的永久代大小对避免Full G原创 2018-02-01 08:38:09 · 227 阅读 · 0 评论 -
java每天5道面试题(八)
1.System.gc()和Runtime.gc()会做什么事情?这两个方法用来提示JVM要进行垃圾回收。但是,立即开始还是延迟进行垃圾回收是取决于JVM的。2.finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法。一般建议在该方法中释放对象持有的资源。原创 2018-01-31 19:05:57 · 257 阅读 · 0 评论 -
java每天5道面试题(七)
1.如何权衡是使用无序的数组还是有序的数组?有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n)。有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置。相反,无序数组的插入时间复杂度是常量O(1)。2.Java集合类框架的最佳实践有哪些?根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元原创 2018-01-30 15:02:05 · 291 阅读 · 0 评论 -
java每天5道面试题(六)
1.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?下面列出了Array和ArrayList的不同点:Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAl原创 2018-01-29 19:24:12 · 361 阅读 · 0 评论 -
java每天5道面试题(五)
1.Iterator和ListIterator的区别是什么?下面列出了他们的区别:Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素原创 2018-01-27 16:56:44 · 256 阅读 · 0 评论 -
java每天5道面试题(四)
1.什么是死锁(deadlock)?两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。2.如何确保N个线程可以访问N个资源同时又不导致死锁?使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。原创 2018-01-26 22:00:20 · 372 阅读 · 0 评论 -
java每天5道面试题(三)
1.进程和线程的区别是什么?进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。2.创建线程有几种不同的方式?你喜欢哪一种?为什么?有三种方式可以用来创建线程:继承Thread类实现Runnable接口应用程序可以使用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这不需原创 2018-01-25 15:06:19 · 299 阅读 · 0 评论 -
java每天5道面试题(二)
1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。2.Java中,什么是构造函数?什么是构造函数重载?什么是复原创 2018-01-24 16:33:23 · 363 阅读 · 0 评论 -
java每天5道面试题(一)
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。2.JDK原创 2018-01-23 14:59:05 · 578 阅读 · 1 评论