专栏首页earthchen的专栏java面试知识要点汇总(web和数据库)

java面试知识要点汇总(web和数据库)

网上的常规与经典面试题汇总与答案—–web部分

面试常考知识点

web

HTTP 请求的 GET 与 POST 方式的区别

  • GET和POST长度的限制问题 GET 1.GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。 2.实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数 POST 1.同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小。2.PHP下可以修改php.conf的postmaxsize来设置POST的大小。
  • 请求header的content-length问题 如果有人恶意伪造content-length很大的包头,但实际上发送content-length很小的请求,这样服务器会一直干等,直到超时。当然服务器是可以通过设置来避免该问题的
  • GET和POST的安全性 1.GET是通过URL方式请求,可以直接看到,明文传输。 2.POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的。 3.GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。
  • GET和POST对服务器的状态 根据http的设计,大家在看到get的时候,都期望这个请求对服务器没有修改,看到post的时候,都认为这对服务器产生了修改。
  • GET幂等,POST不幂等幂等 是指同一个请求方法执行多次和仅执行一次的效果完全相同。 1.按照RFC规范,PUT,DELETE和安全方法都是幂等的。虽说是规范,但服务端实现是否幂等是无法确保的。 2.引入幂等主要是为了处理同一个请求重复发送的情况,比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。这也是浏览器在后退/刷新时遇到POST会给用户提示的原因:POST语义不是幂等的,重复请求可能会带来意想不到的后果。 3.比如在微博这个场景里,GET的语义会被用在「看看我的Timeline上最新的20条微博」这样的场景,而POST的语义会被用在「发微博、评论、点赞」这样的场景中。
  1. session 在服务器端,cookie 在客户端(浏览器)
  2. session 默认被存在在服务器的一个文件里(不是内存)
  3. session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
  4. session 可以放在 文件、数据库、或内存中都可以。
  5. 用户验证这种场合一般会用 session

session 分布式处理

大体有以下5种方式:

  1. 粘性session
  2. 服务器session复制
  3. session持久化到数据库
  4. session共享机制

https://my.oschina.net/u/1774673/blog/871912

TCP的三次握手和四次挥手

https://blog.csdn.net/xiaoliuliu2050/article/details/74178168

数据库

索引

索引的使用

什么时候使用索引表的主关键字
  1. 表的字段唯一约束
  2. 直接条件查询的字段
  3. 查询中与其它表关联的字段
  4. 查询中排序的字段
  5. 查询中统计或分组统计的字段
什么情况下应不建或少建索引
  1. 表记录太少
  2. 经常插入、删除、修改的表
  3. 数据重复且分布平均的表字段
  4. 经常和主字段一块查询但主字段索引值比较多的表字段

复合索引

命中规则
  1. 需要加索引的字段,需要在where条件中
  2. 数据量少的字段不需要索引
  3. 如果where条件中是or条件,加索引不起作用
  4. 符合最左原则

  • 最左原则:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找
  • 在创建符合索引时,应该仔细考虑列的顺序,对索引中的所有列搜索或对钱几列进行搜索时,符合索引非常有用。
  • 当一个表有多条索引可走时, Mysql 根据查询语句的成本来选择走哪条索引, 联合索引的话, 它往往计算的是第一个字段(最左边那个), 这样往往会走错索引

在mysql中使用索引注意

  1. 只要列中包含有null值将不会包含在索引中,复合索引只要有一列含有null值,那么这一列对于此复合索引就是无效的
  2. 对串列进行索引,如果可能应该指定一个前缀长度
  3. mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
  4. like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
  5. 不要在列上进行运算
  6. NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替

https://www.cnblogs.com/softidea/p/5977860.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库中的联合索引

    用户1637228
  • 数据库中的聚簇索引和非聚簇索引

    在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不同,myisam对应的是非聚簇索引,而innodb对应的是聚簇索引。聚簇索引也叫复合索引...

    用户1637228
  • 高性能MySQL学习笔记

    完全的范式和反范式是不存在的,在实际操作中建议混用这两种策略,可能使用部分范式化的schema、缓存表、以及其他技巧。

    用户1637228
  • 腾讯面试:一条SQL语句执行得很慢的原因有哪些?

    说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说...

    小云
  • MySQL 索引知识点总结

    ? 作者:fanili,腾讯 WXG 后台开发工程师 知其然知其所以然!本文介绍索引的数据结构、查找算法、常见的索引概念和索引失效场景。 什么是索引? 在关系...

    腾讯技术工程官方号
  • 美团点评广告实时索引的设计与实现

    美团技术团队
  • MySQL深入学习第十篇-MySQL为什么有时候会选错索引?

    前面我们介绍过索引,你已经知道了在 MySQL 中一张表其实是可以支持多个索引的。但是,你写 SQL 语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个...

    越陌度阡
  • Mysql高频面试题

    Feelings are just visitors. Let them come and go.

    小闫同学啊
  • MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化

    1. 减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余;

    用户5546570
  • 别再一知半解啦!索引其实就这么回事!

    索引的概念基本所有人都会遇到过,就算没有了解过数据库中的索引,在生活中也不可避免的接触到。比方说书籍的目录,字典的查询页,图书馆的科目检索等等。其实这些都是一种...

    五分钟学算法

扫码关注云+社区

领取腾讯云代金券