常见面试题总结


1、java类的源码问题:

          hashmap和hashtable,hashtable是通过synchronized给每个方法实现同步。hashmap是数组+链表来实现高的。

2、https和http的区别:

           首先简单了解下HTTPS所防范的的问题,以及安全连接为何如此重要,在你访问自己喜欢的站点时,从你的电脑发送的请求会在各个不同的网络之间传递——这些网络很有可能是用来偷听,甚至篡改你的信息。局域网中,信息从你的电脑传输到其他电脑,传输到接入点,到ISP的路由器、交换机,最后到达骨干网线路。这样的一个过程中,有许多不同的组织在传送着你的请求。这时,如果不怀好意的用户侵入这条线路之中的任何一个系统中时,他们将很有可能看到线路中传送的内容。

         

        而一般情况下,Web请求和相应都经由普通的HTTP协议明文传送。HTTP协议默认不使用加密协议,都是由于这些原因:

  •       加密消耗了很多计算资源。
  •       加密占用了更多的传输带宽。
  •       加密后缓存机制会失效。

    不过,Web开发者会时不时遇到在连接中传送密码、信用卡号等敏感信息的情况。所以,有必要为这些页面做好防嗅探的准备措施。

           https是如何加密的关于加密算法详情见:https加密算法

 3、post和get提交区别:

        参数提交方式不同。post和get对请求头和请求体长度都没有限制。get方式提交限制长度1kb并不是http协议本身的限制,而是浏览器和服务器解析对url的限制。

4、xml解析方式:Sax解析和Dom解析

      Dom解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。

     Sax解析:事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;

5、html访问的全过程:

       用户输入浏览器地址——载入html代码,发现<head>里的<link>标签引用外部的css文件,下载css文件,渲染——开始加载<body>标签发现<img>标签下载图片,同时加载下边的html代码——遇到js脚本,运行然后重新渲染——执行到</html>加载完成

       DNS解析是基于应用层的详情:DNS和TCP/IP

6、数据库引擎:mysql数据库引擎

      

7、数据库事务隔离机制及特点:

           数据库事务必须支持ACID特性

           Atomic(原子性):指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。

          Consistency(一致性):指数据库事务不能破坏关系数据的完成性以及业务逻辑上的一致性。

          Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。

          Durability(持久性):指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

         事务的(ACID)特性是由关系数据库管理系统(RDBMS,数据库系统)来实现的。数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的初始状态。

         数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。

l 脏读(Dirty Read):指一个线程中的事务读到了另外一个线程中未提交的数据。

l 不可重复读:指一个线程中的事务读到了另外一个线程提交的update的数据。

l 虚读:指一个线程中的事务读到了另外一个线程提交的insert的数据。

READ UNCOMMITTED(1):脏读、不可重复读、虚读都有可能发生

READ COMMITTED(2):防止脏读,不可重复读、虚读都有可能发生

REPEATABLE READ(4):防止脏读、不可重复读,虚读有可能发生

SERIALIZABLE(8):防止脏读、不可重复读、虚读的发生

 数字越大,数据越安全,但效率越低。

 8、jvm有关的东西。

 9、数据库连接池的原理:数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。

       数据库连接池可以使用LinkedList数据结构来实现。

10、B树,B+树,数据库索引,数据库引擎。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值