总结
1、是否了解过PHP的底层实现?
了解底层可能让你更好的写出效率高的PHP程序,如$a = ['hello','world']和 $a[] = 'hello'; $a[] = 'world'; 实现过程有何不同?
2、像数据结构,组成原理,编译原理等大学课程有熟悉的吗?
3、MySQL事务了解吗,如事务的隔离机制?
4、MySQL的索引底层如何实现,了解这些有助于写出高效率sql。
5、MySQL的explain。
6、如$arr = ['a'=>'yes']; 判断$arr['a']存在否有几种方式?
说的isset()和array_key_exists(),那么这两个判断存在否的时候有什么不同?
如果$arr = ['a'=>false];呢,对结果有没有影响?
7、给一串字符串 $s = '][][[[]]]'; 求有多少对'[]'?
//括号匹配问题使用栈去实现,方便快捷 $str = '][][[[]]]'; //初始化一个栈 $stack = new SplStack(); $len = strlen($str); $count = 0; for ($i = 0; $i < $len; $i++) { if ($str[$i] == '[') { $stack->push($str[$i]); } elseif ($str[$i] == ']') { if (!$stack->isEmpty() && $stack->pop() == '[') { $count++; } } } unset($stack); echo $count;//4
8、给用户发送优惠劵,优惠劵有时间限制,并在过期之前的某个时间段需要给用户发送提示消息,设计表和发消息的程序。
card表:
id[优惠劵ID],uid[用户ID],create_time[创建时间],expire_time[过期时间],notice_time[提醒时间]
发消息:
可以select card表,并按照notice_time asc排序,将顺序数据插入到redis队列中,程序读队列,没到时间则还放进去,到时间了发通知。
衍生:现在假设优惠劵表有很多数据,需要分表,那么怎么分比较好?
衍生:分表了怎么查某个用户id所有的优惠劵?
衍生:要是用Redis做优惠劵的缓存,用哪个字段类型?
redis的hash类型比较合适
9、MySQL的InnoDB和MyISAM有什么不同?
10、PHP中求合集,交集,并集的方式?合集只用array_merge()吗?
11、用了redis做缓存,怎么防止缓存穿透,比如访问一个mysql和redis都不存在的数据,是不是每次都去访问MySQL了?
12、数据库主从库数据同步问题,有延迟怎么处理?主从同步是如何同步的,原理呢?https://blog.csdn.net/xidiancyp/article/details/51457053