四、&和&&的区别javascript
答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)css
五、Collection 和 Collections的区别html
答: Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各类集合的搜索、排序、线程安全化等操做java
十一、数组有没有length()这个方法? String有没有length()这个方法linux
答: 数组没有length()这个方法,有length的属性。String有有length()这个方法c++
十二、Overload和Override的区别。Overloaded的方法是否能够改变返回值的类型程序员
答: 方法的重写Overriding和重载Overloading是Java多态性的不一样表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。若是在子类中定义某方法与其父类有相同的名称和参数,咱们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。若是在一个类中定义了多个同名的方法,它们或有不一样的参数个数或有不一样的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是能够改变返回值的类型数据库
1三、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==仍是equals()? 它们有何区别编程
答: Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值windows
2二、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,何时被执行,在return前仍是后
答: 会执行,在return前执行
3七、int 和 Integer 有什么区别
答: Java 提供两种不一样的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每一个原始类型提供了封装类。原始类型封装类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble引用类型和原始类型的行为彻底不一样,而且它们具备不一样的语义。引用类型和原始类型具备不一样的特征和用法,它们包括:大小和速度问题,这种类型以哪一种类型的数据结构存储,当引用类型和原始类型用做某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关
面向对象特性
封装,继承,多态和抽象。
封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其余对象访问的方法来改变它内部的数据。
多态是编程语言给不一样的底层数据类型作相同的接口展现的一种能力。一个多态类型上的操做能够应用到其余类型的值上面。
继承给对象提供了从基类获取字段和方法的能力
抽象是把想法从具体的实例中分离出来的步骤
1.什么是Java虚拟机?为何Java被称做是“平台无关的编程语言”?
Java虚拟机是一个能够执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成容许应用程序能够运行在任意的平台,而不须要程序员为每个平台单独重写或者是从新编译。Java虚拟机让这个变为可能,由于它知道底层硬件平台的指令长度和其余特性。
2.JDK和JRE的区别是什么?
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet须要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其余的工具(好比:JavaDoc,Java调试器),可让开发者开发、编译、执行Java应用程序。
自动装箱
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间作的一个转化。好比:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。所以,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并非实际的对象,而是对象的引用。所以,外部对引用对象所作的改变会反映到全部的对象上。
21.Iterator和ListIterator的区别是什么?
Iterator可用来遍历Set和List集合,可是ListIterator只能用来遍历List。
Iterator对集合只能是前向遍历,ListIterator既能够前向也能够后向。
ListIterator实现了Iterator接口,并包含其余的功能,好比:增长元素,替换元素,获取前一个和后一个元素的索引,等等。
25.HashMap和Hashtable有什么区别?
HashMap和Hashtable都实现了Map接口,所以不少特性很是类似。可是,他们有如下不一样点:
HashMap容许键和值是null,而Hashtable不容许键或者值是null。
Hashtable是同步的,而HashMap不是。所以,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
HashMap提供了可供应用迭代的键的集合,所以,HashMap是快速失败的。另外一方面,Hashtable提供了对键的列举(Enumeration)。
通常认为Hashtable是一个遗留的类。
33.Enumeration接口和Iterator接口的区别有哪些?
Enumeration速度是Iterator的2倍,同时占用更少的内存。可是,Iterator远远比Enumeration安全,由于其余线程不可以修改正在被iterator遍历的集合里面的对象。同时,Iterator容许调用者删除底层集合里面的元素,这对Enumeration来讲是不可能的。
34.HashSet和TreeSet有什么区别?
HashSet是由一个hash表来实现的,所以,它的元素是无序的。add(),remove(),contains()方法的时间复杂度是O(1)。
另外一方面,TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。所以,add(),remove(),contains()方法的时间复杂度是O(logn)。
42.JVM的永久代中会发生垃圾回收么?
垃圾回收不会发生在永久代,若是永久代满了或者是超过了临界值,会触发彻底垃圾回收(Full GC)。若是你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是为何正确的永久代大小对避免Full GC是很是重要的缘由。请参考下Java8:从永久代到元数据区
43.Java中的两种异常类型是什么?他们有什么区别?
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不须要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,而且不受检查的异常能够传播到方法或者是构造函数的外面。相反,受检查的异常必需要用throws语句在方法或者是构造函数上声明。这里有Java异常处理的一些小建议。
45.throw和throws有什么区别?
throw关键字用来在程序中明确的抛出异常,相反,throws语句用来代表方法不能处理的异常。每个方法都必需要指定哪些异常不能处理,因此方法的调用者才可以确保处理可能发生的异常,多个异常是用逗号分隔的。
45.异常处理的时候,finally代码块的重要性是什么?
不管是否抛出异常,finally代码块老是会被执行。就算是没有catch语句同时又抛出异常的状况下,finally代码块仍然会被执行。最后要说的是,finally代码块主要用来释放资源,好比:I/O缓冲区,数据库链接。
75.PreparedStatement比Statement有什么优点?
PreparedStatements是预编译的,所以,性能会更好。同时,不一样的查询参数值,PreparedStatement能够重用。
76.何时使用CallableStatement?用来准备CallableStatement的方法是什么?
CallableStatement用来执行存储过程。存储过程是由数据库存储和提供的。存储过程能够接受输入参数,也能够有返回结果。很是鼓励使用存储过程,由于它提供了安全性和模块化。
77.数据库链接池是什么意思?
像打开关闭数据库链接这种和数据库的交互多是很费时的,尤为是当客户端数量增长的时候,会消耗大量的资源,成本是很是高的。能够在应用服务器启动的时候创建不少个数据库链接并维护在一个池中。链接请求由池中的链接提供。在链接使用完毕之后,把链接归还到池中,以用于知足未来更多的请求。
95.解释下Servlet的生命周期。
Servlet生命周期能够分红四个阶段:加载和实例化、初始化、服务、销毁。
当客户第一次请求时,首先判断是否存在Servlet对象,若不存在,则由Web容器建立对象,然后调用init()方法对其初始化,此初始化方法在整个Servlet生命周期中只调用一次。
完成Servlet对象的建立和实例化以后,Web容器会调用Servlet对象的service()方法来处理请求。
当Web容器关闭或者Servlet对象要从容器中被删除时,会自动调用destory()方法。
96.doGet()方法和doPost()方法有什么区别?
doGet:GET方法会把名值对追加在请求的URL后面。由于URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。而且请求中的参数值是可见的,所以,敏感信息不能用这种方式传递。
doPOST:POST方法经过把请求参数值放在请求体中来克服GET方法的限制,所以,能够发送的参数的数目是没有限制的。最后,经过POST请求传递的敏感信息对外部客户端是不可见的。
101.HTTP响应的结构是怎么样的?
HTTP响应由三个部分组成:
状态码(Status Code):描述了响应的状态。能够用来检查是否成功的完成了请求。请求失败的状况下,状态码可用来找出失败的缘由。若是Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
HTTP头部(HTTP Header):它们包含了更多关于响应的信息。好比:头部能够指定认为响应过时的过时日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
主体(Body):它包含了响应的内容。它能够包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。
102.什么是cookie?session和cookie有什么区别?
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每个Web服务器存储cookie。之后浏览器在给特定的Web服务器发请求的时候,同时会发送全部为该服务器存储的cookie。下面列出了session和cookie的区别:
不管客户端浏览器作怎么样的设置,session都应该能正常工做。客户端能够选择禁用cookie,可是,session仍然是可以工做的,由于客户端没法禁用服务端的session。
在存储的数据量方面session和cookies也是不同的。session可以存储任意的Java对象,cookie只能存储String类型的对象。
104.什么是HTTP隧道?
HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通讯的技术。所以,HTTP协议扮演了一个打通用于通讯的网络协议的管道的包装器的角色。把其余协议的请求掩盖成HTTP的请求就是HTTP隧道。
105.sendRedirect()和forward()方法有什么区别?
sendRedirect()方法会建立一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)之后,以前请求做用域范围之内的对象就失效了,由于会产生一个新的请求,而转发(forwarding)之后,以前请求做用域范围之内的对象仍是能访问的。通常认为sendRedirect()比forward()要慢。
109.JSP有什么优势?
下面列出了使用JSP的优势:
JSP页面是被动态编译成Servlet的,所以,开发者能够很容易的更新展示代码。
JSP页面能够被预编译。
JSP页面能够很容易的和静态模板结合,包括:HTML或者XML,也能够很容易的和产生动态内容的代码结合起来。
开发者能够提供让页面设计者以类XML格式来访问的自定义的JSP标签库。
开发者能够在组件层作逻辑上的改变,而不须要编辑单独使用了应用层逻辑的页面。
九、Servlet和CGI的区别。
与cgi的区别在于servlet处于服务器进程中,它经过多线程方式运行其service方法,一个实例能够服务于多个请求,而且其实例通常不会销毁,而CGI对每一个请求都产生新的进程,服务完成后就销毁,因此效率上低于servlet。
1五、final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示老是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,能够覆盖此方法提供垃圾收集时的其余资源回收,例如关闭文件等。
5一、垃圾回收的优势和原理。并考虑2种回收机制。
Java语言中一个显着的特色就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候再也不须要考虑内存管理。因为有个垃圾回收机制, Java中的对象再也不有"做用域"的概念,只有对象的引用才有"做用域"。垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存。垃圾回收器一般是做为一个单独的低级别的线程运行,不可预知的状况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或全部对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
5二、请说出你所知道的线程同步的方法。
wait():使一个线程处于等待状态,而且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM肯定唤醒哪一个线程,并且不是按优先级。
Allnotity():唤醒全部处入等待状态的线程,注意并非给全部唤醒线程一个对象的锁,而是让它们竞争。
6四、JSP和Servlet有哪些相同点和不一样点,他们之间的联系是什么?
JSP 是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不一样点在于,Servlet的应用逻辑是在Java文件中,而且彻底从表示层中的HTML里分离开来。而JSP的状况是Java和HTML能够组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
7一、简述synchronized和java.util.concurrent.locks.Lock的异同?
主要相同点:Lock能完成synchronized所实现的全部功能
主要不一样点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock必定要求程序员手工释放,而且必须在finally从句中释放。
5. $(document).ready() 是个什么函数?为何要用它?(answer)
ready() 函数用于在文档进入ready状态时执行代码。当DOM 彻底加载(例如HTML被彻底解析DOM树构建完成时),jQuery容许你执行代码。使用$(document).ready()的最大好处在于它适用于全部浏览器,jQuery帮你解决了跨浏览器的难题。
6. JavaScript window.onload 事件和 jQuery ready 函数有何不一样?(答案)
JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待 DOM 被建立还要等到包括大型图片、音频、视频在内的全部外部资源都彻底加载。若是加载图片和媒体内容花费了大量时间,用户就会感觉到定义在 window.onload 事件上的代码在执行时有明显的延迟。
另外一方面,jQuery ready() 函数只需对 DOM 树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。使用 jQuery $(document).ready() 的另外一个优点是你能够在网页里屡次使用它,浏览器会按它们在 HTML 页面里出现的顺序执行它们,相反对于 onload 技术而言,只能在单一函数里使用。鉴于这个好处,用 jQuery ready() 函数比用 JavaScript window.onload 事件要更好些。
11. $(this) 和 this 关键字在 jQuery 中有何不一样?(答案以下)
这对于不少 jQuery 初学者来讲是一个棘手的问题,实际上是个简单的问题。$(this) 返回一个 jQuery 对象,你能够对它调用多个 jQuery 方法,好比用 text() 获取文本,用val() 获取值等等。而 this 表明当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。
1. jQuery 库中的 $() 是什么?(答案以下)
$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被容许调用定义在 jQuery 对象上的多个不一样方法。你甚至能够将一个选择器字符串传入 $() 函数,它会返回一个包含全部匹配的 DOM 元素数组的 jQuery 对象。
三、Jquery中有哪几种类型的选择器?
从我本身的角度来说,能够有3种类型的选择器,以下:
一、基本选择器:直接根据id、css类名、元素名返回匹配的dom元素。
二、层次选择器:也叫作路径选择器,能够根据路径层次来选择相应的DOM元素。
三、过滤选择器:在前面的基础上过滤相关条件,获得匹配的dom元素。
JQ中html()、text()和val()区别?
六、什么是未声明和未定义的变量?
未声明的变量是程序中不存在且未声明的变量。若是程序尝试读取未声明变量的值,则会遇到运行时错误。未定义的变量是在程序中声明但还没有给出任何值的变量。若是程序尝试读取未定义变量的值,则返回未定义的值。
1六、说明“==”和“===”之间的区别?
当进行双等号比较时候: 先检查两个操做数数据类型,若是相同, 则进行===比较, 若是不一样, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 若是类型不一样,直接就是false.
16. javascript是一种什么样的语言
解释性脚本语言,代码不进行预编译
主要用来向HTML页面添加交互行为
能够直接嵌入HTML页面,但单独写成js文件有利于结构和行为的分离
跨平台性,在绝大多数浏览器支持下,能够在多种平台下运行,linux,windows
20. null和undefind的区别
null是表示一个空的对象,转为数值为0,undefind表示一个空的原始值,转为数值为NAN
undefind指本该有一个值,但却并有定义,null表示没有对象,不该该有值
23. 哪些操做会形成内存泄露
内存泄露指任何对象在再也不拥有或再也不须要它以后依然存在
setTimeout第一个参数是字符串而不是函数的时候就会形成内存泄露
闭包
控制台日志
循环(两个对象彼此引用且彼此保留)
24. js垃圾回收方式标记清除:这是js最经常使用的垃圾回收方法,当一个变量进入执行环境时,例如函数中声明一个变量,将其标记为进入环境,当变量离开环境时,(函数执行结束),标记为离开环境引用计数: 跟踪记录每一个值被引用的次数,声明一个变量,并将引用 类型赋值给这个变量,则这个值的引用次数+1,当变量的值变成了另外一个,则这个值的引用次数-1,当值的引用次数为0的时候,就回收