点击上方蓝字关注我们
1 Q:在浏览器中输入url地址到显示页面的过程?
1、DNS解析:浏览器查找域名的ip地址。浏览器缓存->路由器缓存->DNS缓存。
2、TCP连接(三次握手):与服务器建立TCP连接。
3、发起HTTP请求:Cookie会随着请求发送给服务器。
4、服务器处理请求并返回HTTP报文。
5、浏览器解析渲染页面,显示html。
6、连接结束(四次挥手)。
2 Q:DNS查询算法?
1、主机向本地域名服务器的查询一般都是采用递归查询,即如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询。
2、本地域名服务器向根服务器的查询通常采用迭代查询,即当根域名服务器收到本地域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一次应向哪个域名服务器进行查询”。
3 Q:URI和URL的区别是什么?
1、URL(Uniform Resource Location) 是统⼀资源定位符,可以提供该资源的路径。它是⼀种具体的 URI,即 URL 可以⽤来标识⼀个资源,⽽且还指明了如何 locate 这个资源。URI的作⽤像身份证号⼀样,URL的作⽤更像家庭住址⼀样。URL是⼀种具体的URI,它不仅唯⼀标识资源,⽽且还提供了定位该资源的信息。
2、URI(Uniform Resource Identifier) 是统⼀资源标志符,可以唯⼀标识⼀个资源。
4 Q:HAVNG 子句 和 WHERE 的异同点?
1、where 用表中列名,having 用 select 结果别名。
2、影响结果范围:where 从表读出数据的行数,having 返回客户端的行数。
3、where 可以使用索引,having 不能使用索引,只能在临时结果集操作。
4、where 后面不能使用聚集函数,having 是专门使用聚集函数的。
5 Q:#{}和${}的区别是什么?
1、#{}是预编译处理,${}是字符串替换。
2、Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值。
3、Mybatis 在处理${}时,就是把${}替换成变量的值。
4、使用#{}可以有效的防止 SQL 注入,提高系统安全性。
6 Q:resultType resultMap 的区别?
1、类的名字和数据库相同时,可以直接设置 resultType 参数为 Pojo 类。
2、若不同,需要设置 resultMap 将结果名字和 Pojo 名字进行转换。
7 Q:Mybatis 缓存?
Mybatis 中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指 SqlSession 级别的缓存,当在同一个 SqlSession 中进行相同的 SQL 语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存 1024 条 SQL。二级缓存是指可以跨 SqlSession 的缓存。是 mapper 级别的缓存,对于 mapper 级别的缓存不同的sqlsession 是可以共享的。
一级缓存原理:第一次发出一个查询 sql,sql 查询结果写入 sqlsession 的一级缓存中,缓存使用的数据结构是一个 map。key是MapperID+offset+limit+Sql+所有的入参,value是用户信息。同一个 sqlsession 再次发出相同的 sql,就从缓存中取出数据。如果两次中间出现 commit 操作(修改、添加、删除),本 sqlsession 中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。
二级缓存原理:二级缓存的范围是 mapper 级别(mapper 同一个命名空间),mapper 以命名空间为单位创建缓存数据结构,结构是 map。mybatis 的二级缓存是通过 CacheExecutor 实现的。CacheExecutor其实是 Executor 的代理对象。所有的查询操作,在 CacheExecutor 中都会先匹配缓存中是否存在,不存在则查询数据库。key为MapperID+offset+limit+Sql+所有的入参。具体使用:1. Mybatis 全局配置中启用二级缓存配置。2. 在对应的 Mapper.xml 中配置 cache 节点。3. 在对应的 select 查询节点中添加 useCache=true。
8 Q:http 的长连接和短连接?
1、HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
2、在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。从 HTTP/1.1 起,默认使用的是长连接,用以保持连接特性。
点个在看你最好看