zoukankan      html  css  js  c++  java
  • 面试总结--01

    昨天面试感觉技术不够好的样子,回答的太过于急躁,内心不够沉淀。总归来说还是内力不够深厚。

    总结几个问题吧,感觉出现过而自己没有太过于重视。

    1、get与post的区别

    查找资料发现这个问题的答案还真是不太一样,每个人都有不同的说法,我就总结一些在面试中至少还说的过去的答案吧。

    ①:get请求时将请求参数放在URL地址栏后面,post请求将请求参数放在请求体中。

    ②:get请求一般用于向服务器请求数据,post请求一般用于向服务器发送数据。(关于这点我觉得还说的过去的,因为一般提交的数据涉及安全和数据量的时候会考虑到post方法吧,而关于get一般用于向服务器请求数据的原因看③④点)。

    ③:get请求浏览器会有数据缓存,这样在页面进行回退的时候不会再发送请求,post请求浏览器没有数据缓存,页面回退的时候会再一次发送请求。

    ④:get请求产生一次TCP数据包(HTTP Header + data得到服务器响应200则返回数据),post请求会产生二次TCP数据包(先发送header,服务器响应100,则继续发送data,服务器响应200,返回数据)。

    ⑤:get与post安全性上的差异。

    2、n+1问题

    关于这个问题,首先应该明白什么是n+1问题。

    ①:对于一对多,例如订单表和订单商品表。查询订单表时会自动关联每个订单的订单商品。这样查询订单时用掉了一条sql语句,查出了n条订单数据。然后hibernate会挨个找出n个订单对应的订单商品,又用掉n条sql语句,一共是n+1条。

    ②:对于多对一,同样是订单表和订单商品表。查询订单商品时hibernate会自动关联每个订单商品的订单。这样查询订单商品时用了一条语句,查出了n条订单商品。然后hibernate挨个找到每个订单商品的订单,又用掉了n条sql语句,一共是n+1条。

    解决方案:

    1)lazy=true, hibernate3开始已经默认是lazy=true了;lazy=true时不会立刻查询关联对象,只有当需要关联对象(访问其属性,非id字段)时才会发生查询动作。(FetchType.Lazy)

    2)使用二级缓存, 二级缓存的应用将不怕1+N 问题,因为即使第一次查询很慢(未命中),以后查询直接缓存命中也是很快的。刚好又利用了1+N 。

    3 ) 当然你也可以设定fetch="join",一次关联表全查出来,但失去了延迟加载的特性。

  • 相关阅读:
    texarea动态改变监听
    输入配置
    linux 上安装redis 解压之后使用make命令报错
    sql语句能查询出 放在web程序查询不出
    Eclipse 使用git pull 代码时发生冲突的解决办法
    eclipse git 解决冲突
    微信小程序获取openid
    mybatis 一对多 一对一 xml配置
    Eclipse 中撤消git push提交
    idea 开发中遇到的问题
  • 原文地址:https://www.cnblogs.com/ZNwithLC/p/9582358.html
Copyright © 2011-2022 走看看