2017面试问题整理

1、怎样把一个数组中的空数值单元剔除,不要用foreach

 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>

输出:

Array
(
    [0] => foo
    [2] => -1
)

2、怎样查找数组中是否存在一个值,不要用foreach

 'blue', 1 => 'red', 2 => 'green', 3 => 'red', 'obj'=>$obj1, 'type'=>123);

var_dump(array_search('green', $array)); //int(2)
var_dump(array_search('red', $array)); //int(1)
var_dump(array_search($obj1, $array, true)); //string(3) "obj"
var_dump(array_search($obj1, $array)); //string(3) "obj"
var_dump(array_search($obj2, $array)); //bool(false)
var_dump(array_search('123', $array, true)); //bool(false)
var_dump(array_search('123', $array)); //string(4) "type"
?>

3、sort怎么排序的
4、mysql表中有个字段,这个字段是128字符长度,现在要给这个字段加索引,可是我不想把整个字段加索引,那样占用的空间会很大,我想达到的目的是既要加索引,又不占那么大空间
5、快排和冒泡时间复杂度是啥,什么情况下它们的复杂度是一样的
6、数据库事务隔离级别都有啥
7、集群环境下,怎么保证用户session永远落到一台机器上
8、如何保证用户登录唯一性
9、php各版本之间升级的特性、变化都有哪些
10、一个查询可以同时使用多个数据库索引么?
mysql5.0版本(不含)之前只能命中一个索引,但是版本之后是出现了index_merge概念,比如两个字段加了单独索引,会导致两个索引都会查一遍,然后再merge两个索引查到的结果,这样的效率会比较低,建议使用联合索引
11、哪些类型的字段会用到索引

12、mysql常用存储引擎及区别
13、简要说明include和require区别
14、输入一个数值集合,集合内有正数也有负数,集合中的数字为随机乱序而且没有一个任何数字是相同的,找到其中的两个数,使两数的和最接近数组整体平均值的两倍,并写出时间复杂度。
例如:输入:{1,4,7,-6,-3,9}
输出:{1,4}

15、接口和抽象类区别 http://www.ltwen.com/2017/04/05/the-different-of-abstruct-interface/
16、php中怎么保证浮点数的精度
17、找出目录里包含‘csrf’关键字的所有文件
grep -ril ‘csrf’ ./
18、http1.0和1.1版本的区别
19、Oauth工作原理
20、查看进程负载的命令是啥
21、单点登录的原理
22、传值和传引用的区别,传引用的业务场景是啥
23、json_decode($arr, true)和mircotime(true)里面的true有啥区别
24、有这样一个联合索引(a,b,c),请给以下几个sql按效率排序
select * from tbl where a = ? and b = ? and c = ?
select * from tbl where b = ? and c = ? and a = ?
select * from tbl where c = ? and a = ? and b = ?
25、有这样一个sql语句:select * from tbl where a = ? and b = ?,其中a、b均为单独普通索引,请描述一下这样的索引设计
如果说mysql 5.0(不包括)之前版本只能命中一个索引,而之后出现index_merge引擎,可以以两个索引进行查询,再合并
26、索引的设计规则是什么
27、redis支持的数据类型都有啥
string 类似于memcacaed中的k/v操作
hash 有结构化的操作,不需要对像memcached一样二次加工数据
list 双向链表 可用作消息队列
set 集合的概念 场景如用户关注的粉丝
sorted set 有序集合 场景如有权重的消息队列
28、varchar和char的区别是啥
29、innodb和myisam的区别
innodb支持事务 myisam不支持
innodb支持行锁 myisam只支持表锁
innodb支持外键
innodb支持mvcc(多版本并发控制,解决事务隔离下的幻读问题)
30、谈谈你的未来职业发展规划
31、mysql数据库出现性能瓶颈,怎么查、怎么解决
32、网站访问突然特别慢,如果是你该从哪方面定位并解决问题
33、二叉树实现代码
34、最新的mysql、nginx版本是啥 5.7 1.12
35、一个索引最大长度 256字节
36、网站是gbk,ajax乱码问题怎么解决
37、哈希怎么理解
可以理解为一种映射关系,但并不是一一对应的,即A=》B 是唯一的,B=》A并不一定唯一
生活只有很多很多hash的例子如:人=》身份证号,生日=》星座
38、memcached数据分布
39、memcached命中率怎么看
输入stats
cmd_get 总请求数
get_hits 命中数
get_misses 未命中数
40、踩过的php的坑有啥
1、浮点数相加精度问题
41、php的数组用到的主要是什么数据结构
hashtable+双链表
42、关系型数据库三范式
1、表要具有原子性,每个字段不能拆解,关系型数据库都具备
2、满足第一条基础上,每条记录需要有唯一标示字段
3、满足第二条基础上,每个表非关键属性不应出现在其它表字段中
43、PHP处理上传文件信息数组中的文件类型$_FILES['type']由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠
其实就是用到了getimagesize函数,传入tmp文件名可以获得图片的mime类型,完整代码为:http://www.ltwen.com/form-upload/
44、设计任务:1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东
要求如下:
1)要求每个UID(假设在UNIT32内可以表示)10分钟这内只能投5票。
2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。
说明:
1)无需写代码,只需要图跟文字即可。
2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。
3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。
4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。
45、请写出一条SQL满足一下查询需求(表名:score)
1)筛选出不及格科目的个数大于1的学生
2)同时计算该学生不及格科目的平均分
3)不使用子查询
+—-+——–+———+——-+
| id | name | subject | score |
+—-+——–+———+——-+
| 1 | 张三 | 数学 | 80 |
| 2 | 张三 | 语文 | 53 |
| 3 | 张三 | 英语 | 59 |
| 4 | 李四 | 数学 | 55 |
| 5 | 李四 | 语文 | 56 |
| 6 | 李四 | 语文 | 50 |
| 7 | 王五 | 数学 | 100 |
| 8 | 王五 | 语文 | 90 |
+—-+——–+———+——-+
答案:http://www.ltwen.com/2017/04/15/having/

46、php如何遍历多维数组

http://www.ltwen.com/2017/04/19/read-each-array

47、redis比memcache的优势在哪里
1、redis会把数据存在硬盘上,memcache断电就没有了数据
2、redis支持的数据类型多
48、php内存溢出的情况都有哪些
49、php浮点数精度怎么避免,这种问题如何导致的

http://www.laruence.com/2013/03/26/2884.html

50、请问下面输出结果是啥?
$a = 250;
$b = 40;
$a > $b ? $a = 0 ? 30 : 50 + 1 : $b = 0;
echo $a,$b;//5140
?>
上面这个知识点主要考察的知识点是运算符的优先级,上面涉及到的优先级顺序从大到小依次是:
+ 、 >、 ?:(ternary) 、 =

此条目发表在 面试题 分类目录。将固定链接加入收藏夹。

评论功能已关闭。