奇安信2020暑期前端实习笔试总结
一、投递信息
- 投递时间:2020年3月21日
- 岗位:web前端开发工程师—暑期实习
- 工作地点:成都
- 信息来源:校招优选微信公众号
- 回复时间:2020年3月26日
- 笔试时间:2020年3月28日
- 笔试平台:牛客网
二、笔试题型
- 单选题
- 多选题
- 2道编程题
三、回忆起来的题或考点
-
行内样式的优先级
-
<p class="a b">hello html</p>
-
p{color: blue;}.a{color: red;}.b{color: yellow;}文本显示的颜色?
-
-
二叉树的中序遍历(太久没看题,把先序和中序搞混了,我对不起数据结构的老师)
-
TCP拥塞控制(我看了,但是忘了,心痛!)
-
数组、链表、树、哈希表(最高性能)
- switc语法问题(这应该是送分的) ICMPv6(看过,但没记住)
- 行内、块级元素(比较简单)
- 不属于数组的方法 splice()、join()、reverse()、sort()
- 我寻思这都能用呀。想不明白,有大神看到能指点我一下吗
- 堆、栈、进程、线程
- 正则表达式(这个单选多选都出了)
- 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、接下来就是围绕这两方面,进行巩固基础和刷题进行。给定自己最低目标每天刷一道题。我会把每次笔试或者面试进行总结,慢慢进步吧!!!