前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java面试知识要点汇总(web和数据库)

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

作者头像
earthchen
发布2020-09-24 15:54:12
5470
发布2020-09-24 15:54:12
举报
文章被收录于专栏:earthchen的专栏

网上的常规与经典面试题汇总与答案—–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的语义会被用在「发微博、评论、点赞」这样的场景中。

session 与 cookie 区别

  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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-19,,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试常考知识点
    • web
      • HTTP 请求的 GET 与 POST 方式的区别
      • session 与 cookie 区别
      • session 分布式处理
      • TCP的三次握手和四次挥手
    • 数据库
      • 索引
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档