面试题2

    xiaoxiao2025-02-08  13

    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: 请求已完成,且响应已就绪 status

    200: "OK"

    404: 未找到页面

    26 视图解析器 多个展现页面

    27 事务 隔离 传播

        对数据库进行crud操作时执行的一系列动作,都要保证能够正确的执行

        一个事务对数据库的修改与并行的另一个事务的隔离程度 committed 一个事物不会读取并行的另一个事物已修改但未提交的数据

       事物传播 required 支持当前事物,如果当前没有事物就创建一个新事物

    28 java 序列化是为了解决什么问题,为什么要序列化呢 29. 多线程访问一个变量,会出现什么问题。 30. 异常类有哪几种类型。

          http://blog.csdn.net/woshixuye/article/details/8230407 31. 讲一讲你接触的框架的区别。 32.栈里放的是什么,堆里放的是什么

    转载请注明原文地址: https://ju.6miu.com/read-1296221.html
    最新回复(0)