- GET和POST的区别
答:1、Get是从服务器端获取数据,Post则是向服务器端发送数据。Get获取html等静态资源时,如果静态资源没有改变,则返回304状态码(not modify),使用浏览器端的缓存
2、在客户端,Get方式通过URL提交数据,在URL地址栏可以看到请求消息,该消息被编码过;Post数据则是放在Html header内提交。
3、对于Get方式,服务器端用Request.QueryString获取变量的值;对用Post方式,服务器端用Request.getParameter获取提交的数据值。
4、Get方式提交的数据最多1024字节(和浏览器有关,可以更大),而Post则没有限制。
5、Get方式提交的参数及参数值会在地址栏显示,不安全,而Post不会,比较安全。
- 什么是SQL注入,如何防止SQL注入
web攻击。对web应用的攻击模式有以下两种:
1.主动攻击
2.被动攻击
主动攻击模式,有代表性的攻击是SQL注入攻击和OS命令注入攻击。
被动攻击模式中有代表性的攻击是跨站搅拌攻击和跨站点请求伪造
SQL注入攻击.会执行非法SQL的SQL注入攻击。以为SQL语句中的--之后全视为注释。
select * from booktable where author =“上野‘--’ and flag =1
因为--后全视为注释,因此那些flag =0 的数据也被查看到了。即非法查数据库中的数据。
pareStatement来避免Sql注入,在服务器端接收参数数据后,进行验证,此时PrepareStatement会自动检测,而Statement不行,需要手工检测
- JVM垃圾回收算法、垃圾回收类型、垃圾收集器
回收算法:
1、引用计数(Reference Counting)
2、复制(Copying)
3、标记清除(Mark-Sweep)
4、标记整理(Mark-Compact)
5、增量收集(Incremental Collecting)
6、分代收集(Generational Collecting)
回收类型:
1、Scavenge GC
2、Full GC
收集器:
1:串行收集器 SerialGC
2:并行收集器 ParallelGC
3:并发收集器 ConcMarkSweepGC
ps:详细介绍请参考http://chenchendefeng.iteye.com/blog/455883
-
自定义一个包,里面有class文件,如果放在java jdk里面,该包的class文件会被加载吗
答:需要看存放的位置,如果存放在jre/lib/ext/下,会被加载,否则不会加载,如果需要加载,需要自定义类加载器
ps:类加载器加载原理采用父亲委托方式进行类的加载,一个类的加载器,有且仅有一个父类。层次如下,
bootstrap(c++实现)<--extclassLoader(java实现)<--appClassLoader(java实现)<--myClassLoader(java自定义类加载器)
1、凡是java代码,都需要一个类加载器加载,所以最根的boostrap不是用java实现的。boostrap负责加载jre/lib/rt.jar的类
2:extclassLoader负责加载jre/lib/ext/下的类。第十九问题的答案出于此
3:appClassLoader负责加载项目中classpath的类
4:myClassLoader 负责加载项目中非classpath的类。不建议这么写,建议采用接口调用方式
-
Java默认序列化如何去做,哪些字段不会被序列化
-
需要序列化的类实现 Serialization 接口,基本数据类型都会被实例化。如果字段设置为transient,则该字段不能序列化。类中的的静态字段不会被序列化,
-
HashMap中的链表是单向的吗?有双向的链表结构的吗?普通二叉树和红黑树的区别?
答:java.util.HashMap采用的链表法的方式,链表是单向链表。
我在网上查找了很多关于红黑树与二叉树的区别,但是只得到了如下的结论:
红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。
红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的平衡。之前我们在讲解AVL树时,已经领教过AVL树的复杂,但AVL树的复杂比起红黑树来说简直是小巫见大巫。
2. JVM调优
5. 实践中如何优化MySQL
6. 什么情况下设置了索引但无法使用
7. SQL语句的优化
11. 如何设计一个高并发的系统
找工作中状态为:
1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的。
2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的。
3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的。
4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的。