前几天在拉勾投的简历,今天下午下班后去面试,总的感觉是面试很专业很基础,自己太不专业了,大三到现在也只是自己写写小项目自己玩,真正聊技术的话,一点都不专业,专业名词没几个能说的上来,想到之前工作中用到的很多python知识点自己也是说不上来,只是会用,后来看到别人的教程,才知道自己一直用的东东原来是有专业名词的。
下面是面试的题目:
- js 知识点考察:
function fun(){
console.log(this)
}
fun()
b = new fun()
console.log(b)
(1) 以上结果分别是什么?
第一个 this 指向全局作用域,所以打印的应该是window,这个我当时一时没反应过来,知道是指向全局作用域,但是具体打印出来的是什么,没反应过来。
第二个b是fun函数的实例,继承了fun函数的所有特性,但是由于没有给这个实例传参,所以结果是undefined,这个我知道打印出来的是undefined,也知道原因,但是没有按着面试官走,没把实例这个名词说出来。
var a = 1
function fun(){
console.log(a)
if(true){
var a = 2
console.log(a)
}
console.log(a)
}
fun()
console.log(a)
(2) 以上代码打印出来的分别是什么?为什么?
第一个a打印出来是 undefined,因为作用域内不存在这个参数,默认返回undefined。第二个a打印出来是2,因为在if内申明了局部变量a并把2赋值给了这个参数。第三个a打印出来同样是2,因为这条语句在if作用域的下面,代码树是往下延伸的。第四个a打印出来是a,因为a=1属于这个作用域,而函数里的a它是共享不到的,要共享函数内的参数的话,可以用闭包。
(3)第三个问题没太懂,问的是function除了argument外还有哪些内置xx?这个我没听清的用xx表示吧,你们懂的告诉我一声。
- 算法知识点考察
(1)说说快排,这个我当时有点蒙圈了,因为好久之前接触的东东,都忘了,回来后补充解释如下:
快速排序是从目标数据中任意选取一个数据,以这个数据的值为分割点,把目标数据分割为两部分。这样循环操作下去进行排序。这个在代码中用的挺多的,但是我没记住它的学名,没想起来。这个解释摘自我大二时候读《写给大家的算法书》的算法基础部分的笔记。
(2)说说冒泡排序,同上,没打出来,回来后补充解释如下:
冒泡排序是对比相邻的两个数据,根据大小关系调整两个数据的顺序。同样摘自大二的读书笔记。
除了这些还有一些零零碎碎的知识点,我就不一一罗列了,列出这几个典型的吧,可能面试经验比较少,很多东西都准备不充分,背着自己的电脑就过去面试了,面试问到项目就拿出了自己的一些小项目出来,也比较随意,结果是其次,最主要的是面试挺欢乐,知道了自己在前端算法这一块还很薄弱,接下来得好好学学数据结构和算法了。
以上内容首次发布于我的个人博客