面试经常提问,


一:如果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的区别?

六: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中。

相关内容

    暂无相关文章