1java如何避免内存溢出
及时释放资源
"上面的代码中,循环申请了Object对象,并添加到Vector中,然后将对象设置为null,可是这些对象因为被Vector引用着,因此并不能被GC回收,因此造成了内存泄漏。因此,要释放这些对象,还需要被它们从Vector删除,最简单的方法就是将Vector设置为null"
2 事务是什么?单表的增删改会产生事务吗
对数据库进行crud操作时所执行的一系列操作都要保证正确的执行 保证事物的完整性
3 java反射是什么
通过自己发现自己的属性和方法来构造对象
和new的区别
4 gc是什么
当对象失去引用时 对对象进行回收
5 ajax get与post请求区别?
function btn_get_click() { var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); var username = document.getElementById("txt_username").value; var age = document.getElementById("txt_age").value; //添加参数,以求每次访问不同的url,以避免缓存问题 xmlHttp.open("get", "Server.aspx?username=" + encodeURIComponent(username) + "&age=" + encodeURIComponent(age) + "&random=" + Math.random()); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("result").innerHTML = xmlHttp.responseText; } } //发送请求,参数为null xmlHttp.send(null); } function btn_post_click() { var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); var username = document.getElementById("txt_username").value; var age = document.getElementById("txt_age").value; var data = "username=" + encodeURIComponent(username) + "&age=" + encodeURIComponent(age); //不用担心缓存问题 xmlHttp.open("post", "Server.aspx", true); //必须设置,否则服务器端收不到参数 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("result").innerHTML = xmlHttp.responseText; } } //发送请求,要data数据 xmlHttp.send(data); } get请求时,需要加上随机数,避免缓存问题
post需要设置请求消息头
6 闭包作用
Js代码
function f1(){
n=999;
function f2(){ alert(n); // 999 }
}
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1 就是不可见的。这就是Javascript语言特有的“链式作用域”结构(chain scope),
各种专业文献上的“闭包”(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
一 个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。7 hibernate load与get区别
在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的。
session = HibernateUtil.openSession(); User user = (User)session.load(User.class, 2); System.out.println(user); 使用load时会发生延迟加载
这个user对象仅仅是一个保存了id的代理对象,但如果我需要打印出user对象的其他属性值时,这个时候会不会发出sql语句呢?答案是肯定的
②如果使用load方式来加载对象,当我们试图得到一个id不存在的对象时,此时会报ObjectNotFoundException异常:
session = HibernateUtil.openSession(); /* * 当通过get方式试图得到一个id不存在的user对象时,此时会报ObjectNotFoundException异常 */ User user = (User)session.load(User.class, 20); System.out.println(user.getId()); System.out.println(user.getUsername());我们看看控制台的输出:
20 Hibernate: select user0_.id as id0_0_, user0_.username as username0_0_, user0_.password as password0_0_, user0_.born as born0_0_ from user user0_ where user0_.id=? org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.xiaoluo.bean.User#20]......为什么使用load的方式和get的方式来得到一个不存在的对象报的异常不同呢??其原因还是因为load的延迟加载机制,使用load时,此时的user对象是一个代理对象,仅仅保存了当前的这个id值,当我们试图得到该对象的username属性时,这个属性其实是不存在的,所以就会报出ObjectNotFoundException这个异常了。
8 hibernate 查询的方式 除hql 还有哪些的?
http://blog.sina.com.cn/s/blog_7ffb8dd501014a6o.html
从点到面,讲讲hibernate查询的6种方法。分别是HQL查询 ,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。 如果单纯的使用hibernate查询数据库只需要懂其中的一项就可以完成想要实现的一般功能,但是 从一个点,让我们掌握6中方法,则提供了更多选择。每一种方法都有其适用的情况与前提。 HQL查询 HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点。示例代码: static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); //from后面是对象,不是表名 String hql="from Admin as admin where admin.aname=:name";//使用命名参数,推荐使用,易读。 Query query=s.createQuery(hql); query.setString("name", name); List<Admin> list=query.list(); for(Admin admin:list){ System.out.println(admin.getAname()); } }finally{ if(s!=null) s.close(); } } 适用情况:常用方法,比较传统,类似jdbc。缺点:新的查询语言,适用面有限,仅适用于Hibernate框架。 对象化查询Criteria方法:条件查询 static void cri(String name,String password){ Session s=null; try{ s=HibernateUtil.getSession(); Criteria c=s.createCriteria(Admin.class); c.add(Restrictions.eq("aname",name));//eq是等于,gt是大于,lt是小于,or是或 c.add(Restrictions.eq("apassword", password)); List<Admin> list=c.list(); for(Admin admin:list){ System.out.println(admin.getAname()); } }finally{ if(s!=null) s.close(); } } 适用情况:面向对象操作,革新了以前的数据库操作方式,易读。缺点:适用面较HQL有限。 sql查询 static List sql() { Session s = HibernateUtil.getSession(); Query q = s.createSQLQuery("select * from user").addEntity(User.class); List<User> rs = q.list(); s.close(); return rs; } 适用情况:不熟悉HQL的朋友,又不打算转数据库平台的朋友,万能方法 缺点:破坏跨平台,不易维护,不面向对象。
9 oracle的优化
为经常出现在where ,order by,distinct后面的字段创建索引
减少表之间关联
10 jquery与dom相互转换
var obj = document.getElementById("d1")
$o = $(obj); //dom-->jquery
$o = $("#d1");//jquery-->dom
var obj = $o.get(0);
11 js addclass 与css作用
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $("p:first").addClass("intro"); }); }); </script> <style type="text/css"> .intro { font-size:120%; color:red; } </style> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> <button>向第一个 p 元素添加一个类</button> </body> </html>
12 title 与 alt 区别
alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。
用法如下:
<p Title="给链接文字提示">文字</p>
<a href="#" Title="给链接文字提示">文字</a>
<img src="图片.gif" alt="给图片提示">
13 string stringbuffer区别
14 分页查询 聚合函数的使用
SELECT*
FROM(SELECTROWNUMASrowno,t.*
FROMempt
WHEREhire_dateBETWEENTO_DATE('20060501','yyyymmdd')
ANDTO_DATE('20060731','yyyymmdd')
ANDROWNUM<=20)table_alias
WHEREtable_alias.rowno>=10;
常用的count()求个数 sum() 求和 avg()求平均数 min()最小值 max()最大值 一般与group by 语句使用15 存储过程与函数区别
函数必须要有返回值
16 tcp 和 udp区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
17 hashmap结构
底层采用数据加链表的方式实现
18 表空间 临时表空间 游标
临时表空间 在事物提交前存储数据的地方
一个表空间是由具体的一个或多个用户模式下的表,索引等等里面的数据所构成的. 临时表空间
游标是指针
19 数值赋值和引用赋值区别
数值赋值大多数是在栈区分配内存,引用赋值是在方法区开辟内存
20 list
public class listTest { public static void main(String[] args) { List list = new ArrayList(); Person p1 = new Person("kk", 34); Person p2 = new Person("jj", 66); list.add(p1); list.add(p2); for (Object obj : list) { if (obj instanceof Person) { Person p = (Person) obj; p.name = "kevin"; p.age = 11; } } System.out.println(p1.name); System.out.println(p1.age); System.out.println(p2.name); System.out.println(p2.age); } } <pre name="code" class="java">kevin 11 kevin 11
21 io 采用什么模式
装饰模式
22 spring如何处理异常的
拦截器
23 数据源如何加载的
24 二级缓存 如何实现 缓存在哪里
25java singleton 与 spring singleton 区别
26 hibernate 模版的使用
25 http 1 2 3 4 5 含义
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪 status200: "OK"
404: 未找到页面
26 视图解析器 多个展现页面
27 事务 隔离 传播
对数据库进行crud操作时执行的一系列动作,都要保证能够正确的执行
一个事务对数据库的修改与并行的另一个事务的隔离程度 committed 一个事物不会读取并行的另一个事物已修改但未提交的数据
事物传播 required 支持当前事物,如果当前没有事物就创建一个新事物
28 java 序列化是为了解决什么问题,为什么要序列化呢 29. 多线程访问一个变量,会出现什么问题。 30. 异常类有哪几种类型。
http://blog.csdn.net/woshixuye/article/details/8230407 31. 讲一讲你接触的框架的区别。 32.栈里放的是什么,堆里放的是什么