奇安信暑期前端实习笔试总结

时间:2024-02-01 18:20:23

一、投递信息

  1. 投递时间:2020年3月21日
  2. 岗位:web前端开发工程师—暑期实习
  3. 工作地点:成都
  4. 信息来源:校招优选微信公众号
  5. 回复时间:2020年3月26日
  6. 笔试时间:2020年3月28日
  7. 笔试平台:牛客网

二、笔试题型

  1. 单选题
  2. 多选题
  3. 2道编程题

三、回忆起来的题或考点

  1.  行内样式的优先级

    • <p class="a b">hello html</p>

    • p{color: blue;}.a{color: red;}.b{color: yellow;}文本显示的颜色?

  2.  二叉树的中序遍历(太久没看题,把先序和中序搞混了,我对不起数据结构的老师)

  3.  TCP拥塞控制(我看了,但是忘了,心痛!)

    学习文章:https://segmentfault.com/a/1190000018360050

  4. 数组、链表、树、哈希表(最高性能)

  5. switc语法问题(这应该是送分的)
  6. ICMPv6(看过,但没记住)
  7. 行内、块级元素(比较简单)
  8. 不属于数组的方法    splice()、join()、reverse()、sort()  
    • 我寻思这都能用呀。想不明白,有大神看到能指点我一下吗
  9. 堆、栈、进程、线程
  10. 正则表达式(这个单选多选都出了)
  11. let

编程题

 1.小明有n元钱去买口罩,共有6个品牌,A品牌2个装(2元),B品牌3个装(2元),C品牌1个装(3元),D品牌5个装(1元),E品牌3个装(5元),F品牌3个装(2元),每个牌子只能买一次,请问n元小明最多能买多少个?

   当时的想法:这道题很像背包问题,重量=钱;价值=口罩数量。可是我理解的还不是很透彻,使用for循环,一步步遍历下去,只有60%通过,而且浪费了特别多的时间。

   背包问题:https://segmentfault.com/a/1190000012829866

   这里提供学习链接,大家一块钻研,如果我后面写出来成功的,会贴过来。

   

  2.三角形的每条边上有4个圆,在每个圆内写出1-9,使每条边的和相等。按以下的顺序。

   

   当时的想法:做完第一题就只剩下10来分钟,连思路都没,只能硬着头皮敲。但是后面没输出好像也还是0%

    解题思路:

    • 首先判断输入的内容是否违法,(必须是1-9,且不能重复)
    • 1-9的总和为45,设每一边的和为x,三个顶点为a,b,c;3x=45+a+b+c(一个顶点两条边,所以是重复计算的);由此可得a+b+c为三的倍数;
    • 例:三个角分别为1 4 7 || 2 5 8 ||  3 6 9    
      •   1 4边有5 9 
      •   1 7边有3 8
      •   4 7 边有2 6
   let a =  [1,5,9,4,2,6,7,3,8];
    var nums = [1,2,3,4,5,6,7,8,9];
    function permute(nums,a){
      var result =[];
      let b = JSON.parse(JSON.stringify(a)) ;//防止原数组污染
      b.sort((v1,v2)=>v1-v2);//排序
      //进行1对1的判断输入是否合法
      for(let i=0;i<b.length;i++){
        if(b[i]!==nums[i]){
          console.log("非法");
          return false;
          break;
        }
      }
      //三个顶点是否能被三整除
      if((a[0]+a[3]+a[6])%3==0){
        for(i=0;i<a.length;){
          let p = a[i]+a[i+1]+a[i+2]+(a[i+3]?a[i+3]:a[0])
          result.push(p);
          i += 3;
        }//获得三条边的长
        if(result[0]==result[1]&&result[0]==result[2]){
          return true;
        }else{
          return false;
        }
      }
    }
console.log(permute(nums,a));

 

四、总结

  1、选择题很多一知半解,能排除一两个选项,然后靠运气

    2、选择题问的比较多的是基础知识,计算机网络、数据结构、JavaScript、CSS,是自己知识点不够牢固,题做得也不够。接下来就是每天在基础上花时间,将还给老师的补回来。

    3、这两道编程题其实算简单,但是我通过率第一道只有60%,第二道0%其实不应该,第一次用牛客网笔试不熟悉是一方面,还有自己不会把控时间,慌了神。

    4、接下来就是围绕这两方面,进行巩固基础和刷题进行。给定自己最低目标每天刷一道题。我会把每次笔试或者面试进行总结,慢慢进步吧!!!