之前找工作碰到的一些面试题总结
平安金融面试
2018年09月29日,平安金融中心面试题。
第一题 考试运算符
alert(!0)
alert("0"==0)
alert([]==[])
alert('20'+10-9)
答案:true true false 2001
- js中的数字0就是false,非0就是true;
- alert(“0”)和alert(0),都是0,打印typeof,前者是string,后者是number,因为双等号,隐式转化所以为true;
- 基本类型:Number Boolean String undefined null;
引用类型:Object Function ;
两个没有名字的引用类型,怎么可能相等(array就是obj); - 先从左往右计算,字符串+数字等于拼接字符串,减法时隐式转换,才进行计算;
浅拷贝
let a = {x:0};
let b = a;
b.x = 1;
console.log(a.x)
console.log(b.x)
答案:1 1
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象;
附上深拷贝的一些方法,以后有空再补;
jq方法var obj2 = $.extend(true, {}, obj1);
作用域,闭包
var x = 1;
function f(){
y = 2;
var z = 3;
}
f();
alert(x)
alert(y)
alert(z)
答案:1 2 报错:"z is not defined"
变量x与alert(x)处于同一作用域;
变量y是全局声明自然也能打印出来;
变量z是一个块级作用域f()里面的一个方法;
执行顺序
alert(1)
setTimeout(function(){
alert(2)
},0)
alert(3)
答案:1 3 2
js是单线程的,单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。
setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行,也就是说,尽可能早得执行。它在"任务队列"的尾部添加一个事件,因此要等到同步任务和"任务队列"现有的事件都处理完,才会得到执行。在alert(3)后边加上alert(4),答案会是1342;
Promise与执行顺序
alert(1)
new Promise((resole,reject)=>{
reject(2);
console.log(resolve(3))
}).then(x => {
alert(x)
}).catch(err => {
alert(err)
})
alert(4)
答案:1 4 2
执行顺序看上题;
Promise问题
var p = new Promise(function(resolve,reject){
var timeOut = Math.random() * 2;
setTimeout(function () {
if (timeOut < 1) {
resolve('200 OK' + timeOut);
}
else {
reject('timeout in ' + timeOut + ' seconds.');
}
}, timeOut * 2000);
})
.then(function(result){
console.log('成功:' + result);
})
.catch(function(reason){
console.log('失败:' + reason);
})
这样一个随机数逻辑,有时成功,有时失败。(举例)
成功“成功:200 OK 0.9956284444978549”;
失败“失败:timeout in 1.6357541155247552 seconds.”
自己写一个小demo其实就理解Promise怎么玩了,new Promise中的参数就是回调,resolve会被then抓到,reject会被catch抓到。
等会继续更
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。1
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎