常见问题

来自YS的笔记
Yaosong讨论 | 贡献2019年8月29日 (四) 18:15的版本 →‎nginx
跳到导航 跳到搜索

cookie 和 session 的区别

  • 作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。
  • 存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
  • 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
  • 隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
  • 存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。


分布式session

ip_hash Session 复制 缓存中间件

post 和 get 的区别

https://www.w3school.com.cn/tags/html_ref_httpmethods.asp

GET 用于获取信息,是无副作用的,是幂等的,且可缓存 POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存

  • 安全?post请求不会保留在浏览器历史记录中
GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

转发和重定向的区别

堆栈区别

并发和并行的区别

索引

不走索引

行级锁和表级锁

行级锁定的优点:

· 当在许多线程中访问不同的行时只存在少量锁定冲突。

· 回滚时只有少量的更改。

· 可以长时间锁定单一的行。

行级锁定的缺点:

· 比页级或表级锁定占用更多的内存。

· 当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。

· 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。

· 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。

存储引擎

  • InnoDB

数据库,事务,隔离级别,存储引擎

  • 数据库,三大范式

redis,有什么优势 -memcache对比

  • redis数据结构

http\https

  • 默认端口不同80:443
  • https需要颁发证书
  • HTTPS协议的安全性更高
  • https缺点
    • 速度慢
    • 服务器成本

数据库的存储引擎应用场景,索引结构

MyISAM表使用B型树索引。 读取场景下性能好,表锁,不能事务

InnoDB是为处理巨大数据量时的最大性能设计。B树。由于是行锁,写入、更新速度可能会快。

MEMORY表被存储在内存中,且默认使用哈希索引

大数据量的优化

设计一个权限系统

算法题

红黑树

多线程,sleep,wait,yield

restful

设计模式,单例模式,适配器模式

操作系统,死锁

快排时间复杂度

nginx可承受的压力

项目

  • 项目难点
  • 架构优化
  • 难点
  • 主要业务

服务调用超时可能由什么造成

进程间的通信方式

fpm

  • 合适的超时时间request_terminate_timeout、max_execution_time
  • 看服务器性能,设置进程数量max_children
  • fpm进程处理最大请求数max_requests


nginx

  • worker_processes 8; #nginx进程数,建议按照cpu数目来指定,一般为它的倍数,平时设置为2倍。
  • 静态资源缓存
  • nginx打开文件的最大个数

buffer