20200330 面试题

  •  2020-03-30
  • 编程
  •  2020-03-30 13:02:46
  1. 实现阶乘函数 F($n)

    递归法:

    <?php
    function F($n)
    {
        if ($n == 1) {
            return 1;
        }
        return $n * F($n - 1);
    }

    循环法:

    <?php
    function F($n)
    {
        $res = 1;
        for ($i = 1; $i<=$n; ++$i) {
            $res = $res * $i;
        }
        return $res;
    }

    注意 $n 的取值大于等于 0。

  2. MySQL 查询问题

    date_flag 结构如下,其中 t_date 字段为日期,t_flag 字段取值 YNt_signal 字段取值 12。寻找 t_flagY 且同时存在 t_signal 为 1 和 2 记录的最大的 t_date 值。

    t_date t_flag t_signal
    2019-02-07 Y 1
    2019-02-07 N 2
    2019-02-06 Y 2

    使用分组+计数的方法:

    SELECT `t_date`
    FROM `date_flag`
    WHERE t_finished='Y'
    GROUP BY `t_date`
    
    HAVING  
    COUNT(IF(`t_flag`=1, TRUE, NULL)) > 0 
    AND
    COUNT(IF(`t_flag`=2, TRUE, NULL)) > 0 
    
    ORDER BY `t_date` DESC 
    LIMIT 0, 1;
  3. MySQL 存储引擎

    关键字:MyISAM、InnoDB、聚簇索引

  4. 运维相关,查找目录 dir 下包含字符串 "test" 的所有文件:

    使用 grep 命令:grep -rn "test" dir

  5. Angular 中 ngIf ngShow 区别

    前者会根据条件创建/删除页面元素,后者只是通过 CSS 显示/隐藏页面元素。

  6. txt 文件中包含约 60 万行数据,每行都由17位数字组成,数据库中也有若干类似形式数据,找出 txt 文件中但不存在于数据库中的数据。

    思路:从数据库中查出所有数据存到数组里,从 txt 文件逐行读取并判断。array_diff()/isset()?