码迷,mamicode.com
首页 > 其他好文 > 详细

面试经常提问

时间:2019-07-12 21:20:06      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:之间   展示   传输层   ict   用户登录   coding   set   add   根据   

一:如果chmod-x/bin/chmod执行上述命令后,如何恢复

  1. 重装coreutils
  2. 安装busybox,使用busybox chmod + x /bin/chmod改回来

Per版:sudo perl-e’chmod 0775,”/bin/chmod”

Python3版:sudo python-c”import os;os.chmod(“/bin/chmod”,0755)”

二:一台电脑配置无限好,可以同时打开多少个网页?

       65535-1024=64511(端口数)

三:IP地址能被伪造吗?

http头部可以被篡改,但是只能修改X_FORWARDED_FOR,真实ip地址(REMOTE_ADDR)很难修改(除非是路由器去修改),因为真实IP是底层会话IP地址,而且因为TCP3次握手的存在,连接无法建立,伪造的意义不大,至于UDP的话,一般是内网才使用UDP通信。

四:有100万个奖品,每个人可以中奖3次,先到先得,怎么控制并发,不能发超,并保证完全的先到先得模式?

        如果奖品相同,则在redis中初始化一个值5为100万的KV值,每当一个用户抽奖时,现在Redis判断该用户的抽奖记录,如果抽奖记录小于3则可去抽奖,并增加抽奖记录。否则重定向到静态页面,直到100W奖品抽完为止。如果奖品不通,需要根据奖品种类初始化奖品种类数量的KV值,重复上面过程。

五:Memcache和Redis的区别?

  1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcache相比一个最大的区别。
  2. Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcache只是简单的K/V缓存。
  3. 他们的扩展都需要做集群;实现方式:master-slave、Hash。
  4. 在100k以上的数据中,Memcache性能要高于Redis
  5. 如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcache。当然这和你的应用场景和数据特性有关。
  6. 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcache都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
  7. Redis和Memcache在写入性能上面差别不打,读取性能上面尤其是批量读取性能上面Memcache更强
  8. Redis支持多种数据结构,如string,list,dict,set,,zset,hyperloglog一个网页从输入地址回车,到完整展示网页内容这段时间里,做了哪些工作,越详细越好。
  9. 浏览器本地缓存匹配
  10. 本地hosts映射对比
  11. 本地dns缓存解析
  12. 远程dns解析获得服务器Ip地址
  13. 浏览器发送tcp连接请求包(syn)
  14. 请求包经过传输层、网络层、数据链路层封装通过网卡到达路由器
  15. 路由器转发数据包到所属运营商服务器
  16. 运营商服务器通过寻址最短路径通过中继节点到达指定IP地址
  17. 服务器端可能存在反向代理或者负载均衡,都是直接转发请求之上游服务器,当然也可以制定安全防御规则直接丢齐请求包
  18. 上游服务器收到连接请求,在自身可用的情况下,返回(syn+ack)
  19. 浏览器校验ack,再次发送(syn+ack)
  20. 服务器校验ack切换连接状态至established,然后根据请求传输数据包
  21. 当transform-encoding为chunked时浏览器开始渲染页面;四次挥手,连接关闭
  22. 渲染数据完成

六:HTTP Keep-Alive是什么?

HTTP协议采用“请求-应答”模式,当使用普通模式,即5非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(Http协议为无连接的协议),当时用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

Http1.0中默认是关闭的,需要在http头加入“Connection:Keep-Alive”,才能启用Keep-Alive;http1.1中默认启用Keep-Alive如果加入“Connection:close”,才关闭目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep- Alive连接就看服务器设置情况。

七:myisam跟innodb有什么区别?

  • InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
  • InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
  • InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
  • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
  • Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

八:什么是 CSRF 攻击 ?XSS 攻击?如何防范?
XSS定义的主语是“脚本”,是一种跨站执行的脚本,也就是javascript脚本,指的是在网站上注入我们的javascript脚本,执行非法操作。
CSRF定义的主语是”请求“,是一种跨站的伪造的请求,指的是跨站伪造用户的请求,模拟用户的操作。

防御XSS攻击可以通过以下两方面操作:

对用户表单输入的数据进行过滤,对javascript代码进行转义,然后再存入数据库;
在信息的展示页面,也要进行转义,防止javascript在页面上执行。

CSRF攻击的防御可以通过以下两方面操作:

所有需要用户登录之后才能执行的操作属于重要操作,这些操作传递参数应该使用post方式,更加安全;
为防止跨站请求伪造,我们在某次请求的时候都要带上一个csrf_token参数,用于标识请求来源是否合法,csrf_token参数由系统生成,存储在SESSION中。

面试经常提问

标签:之间   展示   传输层   ict   用户登录   coding   set   add   根据   

原文地址:https://www.cnblogs.com/hjp0516-qq/p/11178390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!