前言:
- 4399的前端笔试挺简单的,题目也比较中规中矩,本次考察了“计算机网络、JS、dom”等知识
- 题型是“单选X10 + 简答X3 + 编程题X3 + 论述题X4”
- 4399用的是自己的考试系统,开考前系统崩了一下,很快就好了。他的编程题不能用本地IDE,前端的没必要用,我估计其他的也一样,因为它都没有通过率的概念,直接说“本系统不支持核心代码模式,但若是题目要求用核心代码模式,就写上好了,不用运行……”。
单选 + 简答:
- 这一块考察了有“网络协议的三要素、CSS盒子模型、hash路由和history的区别、还有大量的JS的作用域、原型链、异步编程”
- 简答就是写出代码的运行结果,并分析原因
- 举个例子:下面代码依次输出:"undefined、1、3"。函数作用域中,定义了变量a,因为变量提升,而赋值不会提升,所以第一次输出undefined;a = 2 时局部的a变为2了;window.a还是全局的a即输出1;再往下执行“a = 3”,a值为3了,所以输出3
var a = 1;
(function(){
console.log(a);
a = 2;
console.log(window.a);
var a = 3;
console.log(a);
})()
我之前对这类题目很不感冒,谁会把代码写成这样呢?这样写在实践中真的有啥好处嘛?但是这类题目的价值应该在: - 通过练习加强对JS概念的理解,光是概念上说“变量提升、原型链”,不举个实际的例子就很难掌握
- 通过这些奇怪的写法,告诉JS我们可能有的坑,从而督促一部分人不要这样写;要是真有人这样写了要能读懂
- 有些当下我觉得没价值的东西,是因为我还没遇到对应的场景。举个例子,我学了Object.defineProperty()以后在实际开发中很少会用到,很快就忘记了。但是当我去了解Vue的响应式原理的时候,就派上用场了。所以,vue源码是很好的学习JS的工具;也不要贸然觉得一个知识点没有价值;为所学的东西寻找应用场景,不然很容易忘记。
编程题:
前端这个考察难度很低,我看后端考察得还正常一点。
- 实现功能:将input里输入的整数实时修改成千分位的形式如 1000 变为 1,000。(思路:获取dom,监听输入事件,将值改为千分位,再赋值为value
// 验证可行
<input id="input" type="text">
<script>
let inp = document.getElementById('input')
inp.addEventListener('input', change)
function change(e) {
let num = inp.value;
let res = num.replace(/\,/g,'').split('');
// 给数字添加逗号
let arr = [], index = 3;
for(let i = res.length - 1; i >= 0; i--) {
arr.unshift(res[i]);
index--;
if(index === 0 && i > 0) {
arr.unshift(',')
index = 3
}
}
inp.value = arr.join('')
}
- 找出两个数组中的所有相同的元素
- 找出字符串中第一个不重复的字符的下标
论述题:
还是很有生活的,就说一个吧。“你有很重要的事情要跟你的领导汇报,但他事情太多了,你要怎么办呢?” 我看QQ群里有个人说:“让领导加班来听我汇报”,哈哈。
#4399笔试##前端##你的秋招进展怎么样了#