1: 请问 a 的结果是什么?
if(! "a" in window){
var a = 1;
}
alert(a); // undefined
2:执行以下程序段后,x的值是
var x = 0
switch(++x) {
case 0: ++x;
case 1: ++x;
case 2: ++x;
}
console.log(x);// 3
3:以下哪些操作会触发Reflow:(B 、C)
var obj = document.getElementById("test");
A:alert(obj.className)
B:alert(obj.offsetHeight)
C:obj.style.height = "100px"
D:obj.style.color = "red"
4:会输出什么
var name = 'The window'
let object = {
name: 'My Object',
getNameFunc: function() {
return function() {
return this.name;
}
}
}
console.log(object.getNameFunc()()) // The window
5: 会输出什么
let name = 'The window'
let object = {
name: 'My Object',
getNameFunc: function() {
return function() {
return this.name;
}
}
}
console.log(object.getNameFunc()()) // undefined或者什么都不显示,因为let定义的变量不会挂到window上
6:函数防抖、截流的概念和使用场景?
7:js判断变量是否为数组,至少2种方案
- 方法一:使用 instanceof 运算符 语法:判断的变量 instanceof 判断的对象的类
let arr = [1, 2, 3]
console.log(arr instanceof Array) // true
- 方法二:构造函数,语法:变量.constructor === 变量类型
let arr = [1, 2, 3]
console.log(arr.constructor === Array) // true
- 方法三:isArray()方法 语法 Array.isArray(变量),返回 true 表示是数组,否则不是
console.log(Array.isArray(arr)) // true
- 方法四:Object.prototype.toString.call()
console.log(Object.prototype.toString.call(arr) === '[object Array]')
// true, 注意,每一个参数永远是小写的object,第二个参数是变量具体的类型,首字母大写
- 方法五:通过对象的原型方式来判断
console.log(arr.__proto__ === Array.prototype) // true
- 方法六:Object.getPrototypeOf()
console.log(Object.getPrototypeOf(arr) === Array.prototype) // true
- 方法七:isPrototypeOf()
console.log(Array.prototype.isPrototypeOf(arr)) // true
8:什么是跨域?前端如何解决?
9:请写出以下http状态码的含义(200,301,302,401,404,500,502)
- 200:OK 请求已成功
- 301:Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
- 302:Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
- 401:Unauthorized 请求要求用户的身份认证
- 404:Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
- 500:Internal Server Error 服务器内部错误,无法完成请求
- 502:Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
10:写出5个常用linux命令&含义
11:css画三角形,至少三种方案
12:css清除浮动方法
13:vue兄弟组件间通信方法
14:vue2生命周期
15:React 组件的生命周期方法
16:请说出React中高阶组件的定义和应用场景
17:React中如何用useMemo实现useCallback
18:git实例 场景:你是第一天来公司上班的,项目代码托管在GitLab,项目地址:git@lab.com:org/project.git,现在有一处代码需要你修改。请写出完成此项任务中,与git/gitlab相关的操作步骤
19:你使用 my-dev分支完成了一个需求的开发后,从提交QA测试,QA发现了一个bug,你修复完成后,需要合并到主分支(master分支)打包上线。请描述一下在此任务中,你需要用到的git、npm相关操作步骤
20:前端性能优化方案
21:写出以下代码执行结果
function showName() {
console.log('Toutiao');
}
showName();
function showName() {
console.log('OceanEngine');
}
showName();
-----------------------------------华丽的分隔线----------------------------------------
var myname = "abc"
function showName2(){
console.log(myname);
var myname = "aabbcc"
console.log(myname);
}
showName2();
-----------------------------------华丽的分隔线----------------------------------------
let myname3= 'toutiao'
{
console.log(myname3)
let myname3= 'oceanengine'
}
-----------------------------------华丽的分隔线----------------------------------------
if ([] == false) {console.log(1);};
if ({} == false) {console.log(2);};
if ([]) {console.log(3);};
if ([1] == [1]) {console.log(4);};
if (null == undefined) {console.log(5);};
if (null == false) {console.log(6);};
22:以下是一个页面的代码,请写出用户点击了 id是i的div 后控制台的输出结果
<body>
<div id="i"/>
</body>
<script>
document.body.addEventListener("mousedown", () => {
console.log("key1")
}, true)
document.getElementById("i").addEventListener("mousedown", () => {
console.log("key2")
}, true)
document.body.addEventListener("mousedown", () => {
console.log("key3")
}, false)
document.getElementById("i").addEventListener("mousedown", () => {
console.log("key4")
}, false)
</script>
23:请写出以下代码的执行结果
setTimeout(function() {
console.log('setTimeout');
})
new Promise(function(resolve) {
console.log('promise');
for (let i = 0; i < 10000; i++) {
if(i === 10) {
console.log('for');
}
i == 9999 && resolve('resolve');
}
}).then(function(val) {
console.log(val);
})
console.log('console');
24:代码实现
1:原生js实现获取cookie指定key值 2:JS实现对货币格式化函数:formatMoney(1234567890); // 返回 1,234,567,890 3:返回数组里出现次数最多的数字:MostNumber([1, 2, 2, 1, 3, 1, 1]); // 返回 1
25:123['toString'].length + 123 = ?
26:
var x = 1;
function f(x, y = function () { x = 3; console.log(x); }) {
console.log(x)
var x = 2
y()
console.log(x)
}
f()
console.log(x)
//1、上面的代码输出的是什么?
//2、如果把var x = 2注释掉,输出的又是什么?
//3、如果把f函数第一个参数x改成xx,输出的又是什么?
//4、如果把f函数第一个参数x设置了默认值为4,输出的又是什么?