Hello,大家好。我是公众号 “八点半技术站” 的小编 - Bruce.D。
今天是周一(2020-06-08),分享一句谚语 “读书有三到,心到口到眼到” 。分享给大家的是 「工具 模块」- 解析BAT面试题(下篇)。
很多人对 BAT 以及其他大厂,也是朝思暮想。也因为一些原因,暂时还未能加入。大厂中有很多经典面试题,直到现在也会用,不要问小编为什么知道(保密)。
因此欢迎热爱 IT编程的各位精英,欢迎进入wechat技术群(底部有二维码)一起交流成长。
花几分钟时间看看经典BAT面试题,浏览浏览,或许对你有用!!!
1
1. PHP 中的垃圾回收机制
主要分为三部分:
(1)引用计数基本知识
(2)回收周期(Collecting Cycles)
(3)性能方面考虑的因素
具体建议参考PHP官方手册:
https://www.php.net/manual/zh/features.gc.php
Q:为什么推荐直接了解官方地址呢?
A:我谷歌搜索了一遍,感觉普遍博主讲的也就是将官方的粘贴出来,简单改了改,只有极少部分博主采用自己想法的话述。与其这样搜索,还不如直接去官方了解,岂不美哉。
2
2. Hash 数据结构
主要分为 数组 + 链表
哈希表(Hash table,也叫散列表)
官方:是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表
自家大白话:通过把Key通过一个固定的算法函数(hash函数)转换成一个整型数字,然后就对该数字对数组的长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
当使用hash表查询时,就是使用hash函数将key转换成对应的数组下标,并定位到该下标的数组空间里获取value,这样就充分利用到数组的定位性能进行数据定位。
3
3. PHP 如何定义编码形式?
俩种方式:
(1)如果欲使用gb2312编码,那么php要输出头:
header(“Content-Type: text/html; charset=gb2312")
静态页面添加:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
(2)如果欲使用utf-8编码,那么php要输出头 :
header(“Content-Type: text/html; charset=utf-8")
静态页面添加:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
所有文件的编码格式为utf-8。
4
4. 占位符是如何防止sql注入的?
案例:
$dbh = new PDO("mysql:host=localhost; dbname=demo","user","pass"); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $dbh->exec("set names 'utf8'"); $sql="select * from test where name = ? and password = ?"; $stmt = $dbh->prepare($sql); $exeres = $stmt->execute(array($testname, $pass));
Q:拿上面这段demo来说如何防止?
A:当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;
当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。
注:
(1)你不能让占位符 ? 代替一组值;
(2)你不能让占位符代替数据表名或列名;
(3)你不能让占位符 ? 代替任何其他SQL语法。
恭喜你,又读完了一篇文章。
在这里,希望你看完的 每篇文章 都能对自己有所提升(哪怕是帮助你再次巩固记忆)。