yulu

普通PHP面试遇到的问题2

2017年小米社招面试部分题:
部分笔试题:

  1. 给定一个数组A和一个值sum,找出数组中所有和为sum的两个数。
    • 博客中有一篇给出了此问题的答案,在此不赘述。
  2. 816消消乐:给定一串数字B,然后对其进行消除。例如:81818166 其做完消除处理之后结果为81;818816166其做完消除处理之后结果为空。

    • 这个问题还是比较难的…… 最直观的方案可能是这样的:对给定字符串B从前向后进行遍历,若符合消除规则816,则消除,然后记录一下当前位置减一,并检测一下前后位置是什么。如此循环。
    • 但这个问题实际的解法可能是这样的:
      我们先从简单的问题入手,比如有字符串A:abaabbabc。我们的目的是消除A中形如ab(注:ab != ba)的部分
      • step1: 将ab放入数组arr中,arr = array(‘a’,’b’);
      • step2: 设置index = 0,遍历字符串A。当A中的字符按照数组arr中字符的顺序匹配的时候,将index+1,如果没有匹配到合适相同的字符,则将index置为0,重新开始匹配。如果匹配到合适的字符,则将该字符串消除,然后将index置为消除之前时的值。
      • step3: 重复step2。
        如图:

        代码实现先欠着吧😓
  3. 给一张纪录学生成绩的mysql表,对其进行查询。比如:查出成绩总和最高的前5名。

  4. 给出了一段PHP程序。题目要求找出其中不合理的地方。

部分面试题:

  1. redis在项目中的使用场景。
  2. PDO是什么东西。
    是一种php扩展,为php访问数据库定义了一致的接口,即提供一个抽象层,不管使用哪种数据库,都可以用相同的方法来查询和处理数据。
  3. 写出尽可能多的常用的数组函数并解释。
  4. error_reporting(),display_errors()。
    • error_reporting(): 定义php错误展示级别。
    • display_errors(): 设置是否将错误信息作为输出的一部分显示到屏幕。
  5. 安全方面。
  6. Docker