摘选自牛客网扣扣群中锅炉房。。。的面试经历:

摘选自牛客网扣扣群中锅炉房。。。的面试经历:

*1】 说下TCP

1 TCP是一种面向有连接的传输层协议。

主要处理在传输过程中丢包、传输顺序乱掉等异常情况,还能有效利用带宽,缓解网络拥堵。

2_1   TCP连接的建立---三次握手过程:请求-确认-再确认

(1)客户端向服务端发送 请求建立连接的报文段

(SYN=1,起始序号seq=x)

(2).服务端接收到客户端发送的请求建立连接的报文段后,

如同意建立连接就发送确认建立连接报文段。

(SYN=1,ACK=1,ack=x+1,seq=y)

(3).客户端接收到确认报文段后再向服务器给出确认,为连接分配缓存和变量。

此过程携带应用层数据。

(ACK=1,ack=y+1,seq=x+1)

2_2    TCP连接的释放----

(1).客户端向服务端发送 请求断开连接 的报文段,同时停止发送数据,主动关闭TCP连接。

(FIN=1seq=u)

(2).服务端收到 请求断开连接 后,发出确认请求。

此时Client  >>X>>  Server(断开)

       <<<<<     (仍然可以发送数据)

(ACK=1,seq=u,ack=u+1)

(3).若服务端已经向客户端发送完数据后,就发出 请求切断连接。

(FIN=1,seq=w,ack=u+1)

(4)客户端接收到确认后,断开连接。等待一段时间后,客户端进入关闭状态。

(ACK=1,ack=w+1,seq=u+1)

*2】 打开一个网站过程

http://blog.csdn.net/wdzxl198/article/details/11265475

一 详细过程

搜索栏中输入一个网址,通过DNS查找到对应的IP地址(192.168.1.2)

应用层HTTP

浏览器给服务器发送一个HHTP请求报文,想要获取目标页面的资源;

传输层TCP

HTTP请求报文分割成段发送;

网络层:IP协议

搜索对方的地址;

5同理请求的结果同样利用TCP/IP通信协议向用户进行回传。

二 网上过程

1:浏览器通过DNS解析请求,并发送到本地的域名服务器。2:当本地的域名服务器收到请求后,就先查询本地的缓存,

如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。3:如果本地的缓存中没有该纪录,

则本地域名服务器就直接把请求发给根域名服务器,

然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器 的地址。4:本地服务器再向上一步返回的域名服务器发送请求,

然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。5:重复第四步,直到找到正确的纪录。

3】 数据库索引


数据库
索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。

在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)

4MyIsam 和 innodb对比

1  MyISAM类型不支持事务处理等高级处理,而InnoDB支持,执行速度比Innodb快。

2 MyISAM它们不是事务安全的,而且也不支持外键。

如果事物回滚将造成不完全回滚,不具有原子性。

如果执行大量 的SELECTMyISAM是更好的选择。

3 InnoDB:这种类型是事务安全的.,支持外键。

因此如果需要一个事务安全的存储引擎,建议使用它

.如果你的数据执行大量的INSERTUPDATE,出于性能方面的考虑,应该使用InnoDB

5】虚存,读写分离

6redis优点

   Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)set(集合)zset(有序集合)。这些数据类型都支持push/popadd/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,当前 Redis的应用已经非常广泛,国内像新浪、淘宝,国外像 FlickrGithub等均在使用Redis的缓存服务。

7monodb,memcache

   Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度.

8】说一下看过的源码

9struts2过程

10orm

11】设计模式 单例两种对比

享元模型,工厂写一个简单的死锁;

12GC常用算法,gc过程;

13】平时怎么学习,怎么看书

原文地址:https://www.cnblogs.com/noaman/p/5964859.html