1、Cookie和session的区别?
2、EL和JSTlL是什么?
EL即Expression Language(表达式语言),EL的语法: E L e x p r i s s i o n : { EL exprission }: ELexprission:{ bean.name } 或 ${ bean[‘name’] }。说白了,EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的。
JSTL(JavaServerPages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。JSTL标准标签库包括核心标签库和SQL标签库,核心标签库常用的是if和forEach。
3、class.forname的作用?
Class.forName常见的场景是在数据库驱动初始化的时候调用。
Class.forName本身的意义是加载类到JVM中。 一旦一个类被加载到JVM中,它的静态属性就会被初始化,在初始化的过程中就会执行相关代码,从而达到"加载驱动的效果"
4、Http常见的状态码?
200:一切正常,请求成功。
301:资源网页等被永久转移到其他url上。
404:请求的资源(网页)不存在,也就是说路径不正确。
500:程序内部遇到错误。
5、什么是对象克隆?
在java面向对象的编程当中,要复制引用类型的对象,就必须克隆这些对象。通过调用对所有引用类型和对象都是可用的clone方法,来实现克隆。如果是值类型的实例,那么“=”赋值运算符就可以将源对象的状态逐字节地复制到目标对象中。
6、什么是GC?
GC是Garbage Collection的缩写,即垃圾回收。
这里所谓的垃圾,指的是那些不再被使用的对象,JVM的垃圾回收机制使得开发人员从无聊、容易犯错的手动释放内存资源的过程中解放出来。
开发人员可以更加专注的进行业务功能的开发,而资源回收的工作交由更加专业的垃圾回收机制自动完成。
7、内存泄漏和内存溢出有什么联系和区别?
内存泄漏:
1):内存泄漏是指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统奔溃等严重后果。
2):一次内训泄漏似乎不会有大的影响,但内存泄漏后堆积的结果就是内存溢出。
3):内存泄漏具有隐蔽性,积累性的特征,比其他内存非法访问错误更难检测。这是因为内存泄漏产生的原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏不会直接产生可观察的错误,而是逐渐积累,降低系统的整体性性能。
4):如何有效的进行内存分配和释放,防止内存泄漏,是软件开发人员的关键问题,比如一个服务器应用软件要长时间服务多个客户端,若存在内存泄漏,则会逐渐堆积,导致一系列严重后果。
内存溢出:
1). 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2).集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3).代码中存在死循环或循环产生过多重复的对象实体;
4).使用的第三方软件中的BUG;
5).启动参数内存值设定的过小。
8、post和get的区别?
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
• GET在浏览器回退时是无害的,而POST会再次提交请求。
• GET产生的URL地址可以被Bookmark,而POST不可以。
• GET请求会被浏览器主动cache,而POST不会,除非手动设置。
• GET请求只能进行url编码,而POST支持多种编码方式。
• GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
• GET请求在URL中传送的参数是有长度限制的,而POST么有。
• 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
• GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
• GET参数通过URL传递,POST放在Request body中。