最近在找工作,不找不知道,自己对好多基础内容都忘得七七八八了。
所以打算分享一下遇到的面试题目:
1. 单双引号区别
单引号: 不解析变量,效率高,只能识别转义字符“\”和“\\”
双引号: 解析变量、效率低一点
2. include、require、include_once、requure_once区别
require:
无条件包含,
无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,
错误会导致程序终止。
include
有返回值,而require没有;
如果被包含的文件不存在,那么会提示一个错误,
错误不会终止程序运行。
require_once、include_once
项目内只引入一次
3.echo、print、print_r、var_dump、dump
echo
可以一次输出多个值,没有返回值
print
一次只能输出一个值,返回值为1或者false
echo、print都只能输出简单类型(字符串、整数、浮点数)
print_r
可以打印复杂类型(对象、数组)
var_dump
打印变量类型、长度
4. cookie、session
session存放在服务器
cookie存放在浏览器
session运行依赖session_id,而session_id一般存放在cookie
5.isset和empty
isset判断变量是否设置且值不为null
empty判断变量是否为空,若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
6. file_get_contents除了读取文件,还能做什么
还可以用于模拟http请求
7.innodb和myisam
innodb: 支持外键、事务操作,实现了ACID隔离标准,count时需要扫描全表,不支持全文索引
myisam: 不支持外键、事务,count时不会扫描全表、速度快一点。
实战题目:
1. $a='6'; $b=&$a; $b="2$b"; 请问$a和$b的值
都是26,$a是字符串6,&是引用赋值,所以它们从此福祸相依。
2.

这道题很有意思,从来没见过+++和---这种写法。
通过实践,我发现运行顺序应该是这样的
譬如说$x+++$x++这个语句,它首先运行后面的$x++,然后这个语句就变成了$x+++8,所以结果是15。
一定是这样的运行顺序吗?
你可以运行一下$x+++8,不会报错,结果也是15。
再运行一下8+++$x,你会发现报错了。
所以可以认定,当出现+号时,最后面的那个数一定会先计算。
但是为什么$x++以后,第一个$x的值没有变成8,难道不是8+++8吗?
这个我也还没想明白,毕竟半路出家,请大神给我解释一下。
3. 程序设计,写一段代码能自动加载类名为Stu,文件名为stu.class.php的代码
这个考察的是自动加载函数的使用,__autoload()或者spl_autoload_register()就可以做到。
4. 获取100个长度为6的随机唯一字符串
这里简单点,直接100次获取time(),截取后6位
5. 试读取文件名为rolenum.txt的文件,获取在线最大总人数、android,iphone,ipad在线最大值和时间
rolenum.txt里的内容:
[2013-09-22 15:34:32] android:1 iphone:3 ipad:1 online_total_num:5
[2013-09-22 15:34:32] android:2 iphone:3 ipad:1 online_total_num:6
[2013-09-22 15:34:32] android:1 iphone:1 ipad:3 online_total_num:6
1)第一步读取文件内容,直接file_get_contents()即可
2)把数组变成【时间,1, 3, 1, 5】这样的形式,正则preg_match()即可,注意运用matches参数
其他就很简单啦
6. 请简述防范sql注入
预处理。
不过现在的通常做法是,提交的时候就校验提交的数据,这样很大程序上已经可以确认数据是可靠的了。
7. 假设有一个博客系统,数据库存储采用mysql,用户量为1000万,预计文章总数为10亿,每天至少有100万的更新量,每天的访问量为5000万,对数据库的读写操作比例超过10:1,请问该如何设计该系统。自由发挥。
这道题考的是架构方面的,虽然我们可能没那么经验啊,但是肯定还是听过一些的。
1)既然他谈到了读写比例,那么肯定要回答读写分离,同时缓存肯定要上;
2)访问量那么大,机器肯定要上去数量,集群咯,分布式咯,微服务咯,都能解决;
3)虽然他说是用mysql,但是我们还可以采用Elastaticsearch这样的天生支持分布式的东东。
如果这是考试,多少能拿点分,至于他要深挖下去的话,先让他看薪资待遇,一个目前想拿10k的人,总不能要求15k、20k的问题吧。
这家公司是一个大型的游戏公司,大公司都有这样的通病:HR人员傲慢,工作氛围很沉重。
实在是不想呆在这样的公司成为螺丝钉,很可怕。
所以打算分享一下遇到的面试题目:
1. 单双引号区别
单引号: 不解析变量,效率高,只能识别转义字符“\”和“\\”
双引号: 解析变量、效率低一点
2. include、require、include_once、requure_once区别
require:
无条件包含,
无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,
错误会导致程序终止。
include
有返回值,而require没有;
如果被包含的文件不存在,那么会提示一个错误,
错误不会终止程序运行。
require_once、include_once
项目内只引入一次
3.echo、print、print_r、var_dump、dump
echo
可以一次输出多个值,没有返回值
一次只能输出一个值,返回值为1或者false
echo、print都只能输出简单类型(字符串、整数、浮点数)
print_r
可以打印复杂类型(对象、数组)
var_dump
打印变量类型、长度
4. cookie、session
session存放在服务器
cookie存放在浏览器
session运行依赖session_id,而session_id一般存放在cookie
5.isset和empty
isset判断变量是否设置且值不为null
empty判断变量是否为空,若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
6. file_get_contents除了读取文件,还能做什么
还可以用于模拟http请求
7.innodb和myisam
innodb: 支持外键、事务操作,实现了ACID隔离标准,count时需要扫描全表,不支持全文索引
myisam: 不支持外键、事务,count时不会扫描全表、速度快一点。
实战题目:
1. $a='6'; $b=&$a; $b="2$b"; 请问$a和$b的值
都是26,$a是字符串6,&是引用赋值,所以它们从此福祸相依。
2.

这道题很有意思,从来没见过+++和---这种写法。
通过实践,我发现运行顺序应该是这样的
譬如说$x+++$x++这个语句,它首先运行后面的$x++,然后这个语句就变成了$x+++8,所以结果是15。
一定是这样的运行顺序吗?
你可以运行一下$x+++8,不会报错,结果也是15。
再运行一下8+++$x,你会发现报错了。
所以可以认定,当出现+号时,最后面的那个数一定会先计算。
但是为什么$x++以后,第一个$x的值没有变成8,难道不是8+++8吗?
这个我也还没想明白,毕竟半路出家,请大神给我解释一下。
3. 程序设计,写一段代码能自动加载类名为Stu,文件名为stu.class.php的代码
这个考察的是自动加载函数的使用,__autoload()或者spl_autoload_register()就可以做到。
4. 获取100个长度为6的随机唯一字符串
这里简单点,直接100次获取time(),截取后6位

5. 试读取文件名为rolenum.txt的文件,获取在线最大总人数、android,iphone,ipad在线最大值和时间
rolenum.txt里的内容:
[2013-09-22 15:34:32] android:1 iphone:3 ipad:1 online_total_num:5
[2013-09-22 15:34:32] android:2 iphone:3 ipad:1 online_total_num:6
[2013-09-22 15:34:32] android:1 iphone:1 ipad:3 online_total_num:6
1)第一步读取文件内容,直接file_get_contents()即可
2)把数组变成【时间,1, 3, 1, 5】这样的形式,正则preg_match()即可,注意运用matches参数
其他就很简单啦
6. 请简述防范sql注入
预处理。
不过现在的通常做法是,提交的时候就校验提交的数据,这样很大程序上已经可以确认数据是可靠的了。
7. 假设有一个博客系统,数据库存储采用mysql,用户量为1000万,预计文章总数为10亿,每天至少有100万的更新量,每天的访问量为5000万,对数据库的读写操作比例超过10:1,请问该如何设计该系统。自由发挥。
这道题考的是架构方面的,虽然我们可能没那么经验啊,但是肯定还是听过一些的。
1)既然他谈到了读写比例,那么肯定要回答读写分离,同时缓存肯定要上;
2)访问量那么大,机器肯定要上去数量,集群咯,分布式咯,微服务咯,都能解决;
3)虽然他说是用mysql,但是我们还可以采用Elastaticsearch这样的天生支持分布式的东东。
如果这是考试,多少能拿点分,至于他要深挖下去的话,先让他看薪资待遇,一个目前想拿10k的人,总不能要求15k、20k的问题吧。
这家公司是一个大型的游戏公司,大公司都有这样的通病:HR人员傲慢,工作氛围很沉重。
实在是不想呆在这样的公司成为螺丝钉,很可怕。