总结

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

 

posted @ 2019-06-27 17:43  弍月关  阅读(183)  评论(0编辑  收藏  举报