• 一次尴尬的面试经历


         阴雨绵绵,骑上我心爱的小摩托,没有堵车,顺利到达目的。等了一阵,给了一份笔试题,做吧。
        遥想前几日,我临时决定写简历,周末2天时间我大致整理出了我的一份新简历。于是乎,我上传到了某些平台。前天,我开始沟通,与某个公司简短的沟通之后,便递交了我的简历。当天下午,收到了他们的面试邀请,然后我做了一个很大的决定:“去试试”。

        从到面试的时间往前推,留给我复习的时间只有2天不到,这两天我还要工作,那差不多久是晚上了。这段时间里,我看了两套面试题,然后又看了很多协议、进程、nginx、php-fpm的知识,有预习了我自己写过的项目。最后,我差不多知道,做笔试的话,应该有点老火,毕竟最近业务忙,(虽然可能是基础差说辞,但是也真有点,笔试和考试一样,复习的好,效果可能会好很多)。

       两张纸,做题40多分钟,字也太差了,重抄了一份。整套题的难度适中,但我写出来的效果还是差太多,这也反应自己的基础问题,平时也不能光Ctrl+c、Ctrl+v了,考前多预习。

      现在我来分析一下题以及我回答的情况:

           大致的题目如下:

    1. 求100以内的素数(1和自身整除)
    2. 用户表user 字段id,name,age,city 写sql:age 20~30,city分组,分组>10
    3. 字符串"aabckaaas" 求出现最多的字母
    4. "/usr/home/www/user.php"的后缀
    5. 正则匹配 1a2l13c的全部数字
    6. 求 你好啊hello,中文算一个的长度
    7. 补全时间,给定的集合中,补全前后差值超过3的元素
      [
      ['time' => 1],
      ['time' => 4],
      ['time' => 7],
      ['time' => 22],
      ['time' => 31],
      ['time' => 41],
      ]

        我的情况:

    1.           素数:我写的是个啥,只想到了第二层循环去除,➳♥゛
       1 $arr = [];
       2 for ($i = 1; $i <= 100; $i++) {
       3     for ($j = 1; $j <= $i; $j++) {
       4         if ($i % $j == 0 && $i % 1 == 0 && $i != $j) {
       5             break;
       6         }
       7         $arr[] = $i;
       8     }
       9 
      10 }
      11 
      12 echo '<pre>';
      13 print_r($arr);

         正解:看了正确的答案,其实很简单,大概是我笨了吧 难受

      $arr = [];
      for ($i = 1; $i <= 100; $i++) {
          $flag = 1;//假设是素数
          for ($j = 2; $j < $i; $j++) {
              if ($i % $j == 0) {
                  $flag = 0;//如果被其他数整除,就不是素数
                  break;
              }
          }
      
          if ($flag) $arr[] = $i;
      
      }
      
      echo '<pre>';
      print_r($arr);
    2. sql语句:我真想抽自己一巴掌了,顺序都能记错。
      SELECT count('*') as total,city  from test.user_info where age >= 20 and age <= 30  having total > 10 group by city 

      正解:where 过滤的数据列表,先where 在 group by分组,having是对聚合之后的数据进行过滤

      SELECT count('*') as total,city  from test.user_info where age >= 20 and age <= 30  group by city having total > 10
    3. 求出现最多的字母:我这里首先混淆了implode【将一个数组按照指定字符串拼接成字符串】和explode【将一个字符串按照指定字符串分割成数组】,该死。但是使用explode也是错误的,手册说明了:如果 delimiter 为空字符串(""),explode() 将返回 FALSE
      $str = "aabckaaas";
      $arr = implode('', $str);//我把函数用错了,使用explode
      $nums = [];
      foreach ($arr as $value) {
          if (strpos($str, $value) !== false) {
              if (isset($nums[$value])) {
                  $nums[$value] += 1;
              } else {
                  $nums[$value] = 1;
              }
          }
      }
      $values = array_values($nums);
      $max = max($values);
      foreach ($nums as $key => $num) {
          if ($num == $max) {
              echo '最多的字母:', $key, PHP_EOL;
              break;
          }
      }

      测试之后的正解:可以使用str_split分割函数,按照指定的长度分割成数组,然后基础不扎实嘛,不是只有索引数组可以使用max函数,关联数组也行。array_search()就是查询元素对应的键的

      $str = "aabckaaas";
      $arr = str_split($str, 1);//我把函数用错了
      $nums = [];
      foreach ($arr as $value) {
          if (strpos($str, $value) !== false)
              $nums[$value] = isset($nums[$value]) ? $nums[$value] + 1 : 1;
      }
      $max = max($nums);
      var_dump(array_search($max, $nums));
    4. 取文件后缀:使用pathinfo时,我担心把extension写错,我又多此一举写了一个后面的方法
      $str = '/usr/home/www/user.php';
      $pathInfo = pathinfo($str);
      echo '后缀:', $pathInfo['extension'], PHP_EOL;
      $a = end(explode('.', $str));
      echo '后缀:', $a[0], PHP_EOL;
    5. 正则:我都不贴我写的了,居然把子表达式符号记成了{},还有函数还少写了中间的字符串
      preg_match_all("/(d+)/", "1a2l13c", $matches);
    6. 求含有中文字符的长度,中文算一个:
      echo '长度:', mb_strlen("你好啊hello"), PHP_EOL;
    7. 补全时间:现场写的时候我在for循环的起始,没有多+3,导致起点重复了;多此一举的排序,大脑里想着早点写完,思路也没有审核一下。
      foreach ($times as $key => $time) {
          if ($key > 0) {
              $diff = $time['time'] - $times[$key - 1]['time'];
              if ($diff > 3) {
                  $st = $times[$key - 1]['time'];
                  for ($i = $st; $i <= $time['time']; $i += 3) {// 我答案上少些了一个+3
                      $newtTimes[] = ['time' => $i];
                  }
              } else {
                  $newtTimes[] = $time;
              }
          } else {
              $newtTimes[] = $time;
          }
      }
      
      $t = [];
      foreach ($newtTimes as $newtTime) {
          $t[] = $newtTime['time'];
      }
      array_multisort($t, SORT_ASC, $newtTimes);
      print_r($newtTimes);

      测试之后的正解

      foreach ($times as $key => $time) {
          if ($key > 0) {
              $diff = $time['time'] - $times[$key - 1]['time'];
              if ($diff > 3) {
                  $st = $times[$key - 1]['time'];
                  for ($i = $st + 3; $i <= $time['time']; $i += 3) {// 我答案上少些了一个+3
                      $newtTimes[] = ['time' => $i];
                  }
              } else {
                  $newtTimes[] = $time;
              }
          } else {
              $newtTimes[] = $time;
          }
      }
      print_r($newtTimes);



       总结我的答题: 

           以上回答均是个人写法,基础弱。

    面试

            一个感觉年龄差不多的人像我走来,我大概知道他是面试官了。进去之后,先让我做自我介绍。已经3年没面试的我,显得很唐突。简单几句我说完了。

            沟通中,我说了我的项目经历,然后他问了我 遇到的复杂的业务:我大致讲了我认为的复杂的。有两个细节我记得,一就是我说了索引失效的问题,但是我答得很浅,其实我也确实对索引认知不够。二就是我说了我做一个商品管理的复杂业务(也没说好)

           另外,我今天有点针锋相对了,他认为我做的业务难度不大,其实我也这么觉得。现在的我多了一个反问的胆子,我问:你们有什么复杂的业务嘛,你们php主要做啥.... 

          听他说了,我也怎么明白。当时有点尴尬,现在想来,自己说的厉害了。他们团队是充盈的,在相同的业务情况下(视频实时预览,硬件对接),他们有着自己的底层,而我只有接入第三方的解决方案,以及使用nodejs、workerman、swoole做长连接服务,确实显得

       有点差劲了。但是我会相信 未来 php在常驻内存、网络应用上一定会有一席之地,而我仍会坚持学习它们。

        整个下来,效果不怎么好。面试官没有get的我回答问题的深度,我自己也不自信了,然后回答的也不好。也感谢面试官的语言,深刻的让我认识到当前所做的局限性。作为一个技术人,除了物质要求,也渴望技术领域的提升

    时间倒流

         人家问我做过什么复杂的业务没有:

        我应该把 我做的 接口安全规范验证、webgis地图服务,使用winform开发的桌面程序与php对接这些补上去,即使也会认为不复杂

        人家问还有什么想问的:

                 我其实想问:公司的系统的pv、uv;公司的接口安全如何处理;数据量大了如何处理;团队如何协作等等

    留给每个看到的技术人

              假如面试官问你 遇到了哪些复杂的问题,你们如何回答呢?

  • 相关阅读:
    RCTF 2019 web
    php花式读取文件
    PHP审计基础
    《笼中鸟——精神病人的生存现状》观后的一点思考
    python一些小trick
    Appium+Python入门学习总结
    解决windows下 Python中 matplotlib 做图中文不显示的问题
    py3.5 telnet的实例(在远程机器上批量创建用户)
    关于pycharm的一个imoprt的随笔
    LookupError: unknown encoding: idna 的处理方法
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/12924990.html
Copyright © 2020-2023  润新知