PHP常见的面试题(2)
1、Mysql中int1和int10 有什么区别?
INT[(M)] [UNSIGNED] [ZEROFILL]
普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
INT(1) 和 INT(10)本身没有区别,但是加上(M)值后,会有显示宽度的设置。
2、varvhar20能存多少汉字?
首先要确定mysql版本
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个
其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在mysql都5.0已上了,varchar(20)是可以存20个汉字的
3、负载均衡和反向代理的区别
反向代理是实现负载均衡的一种方法。
先谈反向代理。用户在请求时,先把请求发送给代理的服务器,然后由代理服务器根据算法去请求真实的服务器,最后返回给用户。这种做法,其一是提高了安全性;其二是通过多台的real server分担了用户的请求,实现了负载均衡。
再谈负载均衡。负载均衡的出现,是通过横向的扩展,尽可能地降低单台服务器的压力。常见WEB层面的负载均衡的方案有硬件F5、Nginx代理、LVS、各个云商的负载均衡服务(如AWS的ELB服务)等。负载均衡后面连的一般是实际提供服务的服务器,如通过ELB服务,可以做到流量的均匀分担,从而减少单机服务器的压力。
由于增加了负载均衡这层,所以单纯地使用某个方案还是要考虑单点的问题。负责由于负载均衡这个服务器未能承受住压力,宕机了,服务也是不可用的。所以Nginx、LVS尽量配置多台代理,可以故障转移和故障报警,从而及时去处理代理层服务器的问题。ELB是亚马逊提供的服务,它本身的实现底层就有数百甚至上千的机器,所以把它想象成一个代理集群就好。
4、聚簇索引和非聚簇索引
1、聚簇索引
a) 一个索引项直接对应实际数据记录的存储页,可谓“直达”
b) 主键缺省使用它
c) 索引项的排序和数据行的存储排序完全一致,利用这一点,想修改数据的存储顺序,可以通过改变主键的方法(撤销原有主键,另找也能满足主键要求的一个字段或一组字段,重建主键)
d) 一个表只能有一个聚簇索引(理由:数据一旦存储,顺序只能有一种)
2、非聚簇索引
a) 不能“直达”,可能链式地访问多级页表后,才能定位到数据页
b) 一个表可以有多个非聚簇索引
5.正则贪婪匹配与非贪婪匹配的区别?
贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配
6.常见的web攻击有哪些?什么是Xss攻击csrf ?如何防止sql注入?如何防止xss攻击?
Xss攻击是跨站脚本工具
Csrf攻击是跨站请求伪造
如何防止sql注入:1执行sql语句是使用addslashes进行sql语句转换
2 sql语句书写尽量不要省略双引号和单引号
3 过滤掉sql语句里的关键词 :update insert delete select *
4 PHP配置文件中设置register_global为off,关闭全局变量注册
5 控制错误信息 不要把错误信息输出到浏览器上 应保存在错误日志里
7.怎么实现第三方登录:
oAuth基本原理
接入QQ登录前置条件
申请AppID 和Appkey
登录QQ互联申请网站应用或移动应用接入
按照步骤申请成功后,创建应用即可看到对应的AppId和AppKey
8.说一下TCP / UDP 协议
TCP 传输控制协议,是一个面向连接的协议
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议,是一个非连接的协议。
UDP和TCP都属于传输层协议
http基于tcp协议
9.什么是分布式 (分布式集群 分布式事物 分布式缓存)
分布式(集群)与集群的联系与区别?
分布式是指将不同的业务分布在不同的地方。?而集群指的是将几台服务器集中在一起,实现同一业务。?
分布式中的每一个节点,都可以做集群。?而集群并不一定就是分布式的。
而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。?
分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。(分布式事物 分布式缓存 没有明确答案,可自行百度 )
10.http1.0 与 http1.1 区别?
HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处 理
HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
11. http协议基于什么?oAuth协议?