记一次面试
1、给定一个字符串str,怎么判断它是否是一个数组arr的键名?
array_keys_exists($str,$arr)
2、DNS协议怎么工作的?
DNS是应用层协议 ,实现ip与域名的映射,将域名转成对应的IP地址。
3、怎样判断一个数组是否为空?
count($arr)和empty($arr)
4、打开文件的函数是什么?权限该怎么设置?
打开文件:fopen($file,w/w+/r/r+/a/a+)
fread()读取打开的文件,fclose()关闭打开的文件。
5、PHP中的最大数?如果想要存储一个比这更大的数,该怎么处理?
输出PHP_INT_MAX即为最大的数。可以用字符串存储
6、XSS攻击
跨站脚本攻击,指web网页中被植入恶意js代码。
如何防止:过滤js代码 使用htmlspecialchars()函数转义(将特殊的html字符转换为普通字符)。使用csrf_token 指令验签。
7、什么是SQL注入?如何防止?
指把sql命令插入到web表单提交或输入域名或者页面请求的查询的字符串。
防止:使用htmlspecialchars()函数转义(将特殊的html字符转换为普通字符)
addslashes()函数
mysqli预处理
php.ini中magic_quotes_gpc = On 默认是off ,开启为on
8、数据库优化
1,表设计要规范,符合三范式
2,选择合适的字段属性,尽量设为not null
3,使用连接查询(left join/right join/inner join)代替子查询,少使用select * 和like通配符。
4,建立索引,加快查询速度
5,事务处理,避免大事务操作
6,锁定表(维护数据的完整性)
7,使用外键(保证数据的关联性)
9、redis
Nosql产品,非关系型数据库
特点:内存数据库,速度快,读写性能很好,可以持久化(AOF BDF)
支持事务,要么全做 要么全不做
支持的数据类型:string list set hash(符合ASSII二进制的数据)
支持读写分离
10、apache怎么跑php的?
apache中加载php模块,添加apache需要处理的文件类型(AddType application/x-httpd-php .php)
11、PHP中的数据类型有哪些?
三大类:简单型,复杂型,特殊型
八小类:整型,浮点型,布尔型,字符串型,数组型,资源型,对象型,空型
12、jquery如何实现跨站获取数据?
通过jquery+ajax进行跨域,其实是采用jsonp(json with padding)
13、apache与nginx
nginx的优点:轻量级,抗并发,nainx处理请求时异步非阻塞 而apache是阻塞型
在高并发下nginx能保持低资源低消耗高性能
负载均衡
apache的优点:超稳定 bug少 模块多 rewrite强大
14、mysql与mysqli
mysqli连接是永久连接,而MySQL是非永久连接。
mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
mysqli连接:一直都只使用同一个进程
好处:mysqli可以很大程度的减轻服务器端压力
总结:使用mysqli更好
15、怎样实现项目中对mysql的操作连接
$link = mysqli_connect("localhost","root","root","dbname");
16、你理解的资源型数据是什么?
资源类型是对外部资源的引用,通过专门的函数来建立句柄。
最常见的有数据库连接,打开文件等.