最后
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。
并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。
Math.floor(Math.random()*10+1)
parseInt (Math.random()*10+1)
8. 什么是变量声明提前?
答案:
使用var关键字声明的变量,会将声明提升到所在作用域的最前边。。
9. push、pop、shift和unshift 区别?
答案:
这两组同为对数组的操作,并且会改变数组的本身的长度及内容。
不同的是push()、pop() 是从数组的尾部进行增减,unshift()、shift() 是从数组的头部进行增减。。
10. 例举4种强制类型转换和3种隐式类型转换?
答案:
强制转换:parseInt/parseFloat/Number/toString
隐式转换:
字符串+数值 数值转字符串
数值+布尔型 布尔型中true转为1,false转为0
字符串+布尔型 布尔型转为字符串。
11. 函数声明与函数表达式的区别?
答案:
相同点:两者都可以创建函数。
不同点:函数声明可以存在函数提升(前),函数表达式不存在函数提升(前)。
//函数声明
function myFunction(){
function innerFunction() {}
}
//以下为函数表达式
var myFunc = function(){};
myFunc(function(){
return function(){};
} );
12. 请指出JavaScript宿主对象和原生对象的区别?
答案:
宿主对象:指JavaScript解释器提供的对象,由解释器厂家自定义并提供实现,不同的解释器提供的扩展对象存在较大的差异(DOM和BOM对象)。
原生对象:JavaScript语言本身预定义的对象,在ECMAScript标准中定义,由所有的解释器厂家来提供具体实现(Array,Date,Math,Number,String,Boolean等)。
13. js中有哪些内置函数?
**答案:**Object,Array, Boolean, Number, String, Function, Date, Math, RegExp, Error, Global
14.列举出获取日期相关函数
答案:
console.log(Date.now()); // 返回当前日期和时间’1970/01/01 00:00:00’之间的毫秒值
var dt = newDate(); // 获取当前时间—年 月 日 时 分 秒
console.log(dt.getTime()); //返回当前日期和时间’1970/01/01 00:00:00’之间的毫秒值
console.log(dt.getFullYear()); // 年份
console.log(dt.getMonth()+1); // 月份(0-11)
console.log(dt.getDate()); // 日期(0/1-31)
console.log(dt.getDay()); //星期(0-6)
console.log(dt.getHours()); // 小时(0-23)
console.log(dt.getMinutes()); // 分钟(0-59)
console.log(dt.getMilliseconds); // 返回毫秒(0-999)
console.log(dt.getSeconds()); // 秒(0-59)
15.Math相关函数
**答案:**
Math.random()-
返回 0 ~ 1 之间的随机数
Math.abs(x) -``返回数的绝对值
Math.ceil(x)-
向上取整
Math.floor(x)-
向下取整
Math.round()
四舍五入
Math.max()
和 Max.min()
获取一组数据中的最大值和最小值
Math.PI
获取圆周率π 的值Math.pow() 获取一个值的多少次幂
Math.sqrt() 对数值开方
Math.pow(10,2) = 100;
Math.sqrt(100) = 10;
16.null和undefined的区别?
答案:
undefined是访问一个未初始化的变量时返回的值,
null是访问一个尚不存在的对象时所返回的值。因此,可以把undefined看作是空的变量,而null看作是空的对象。
17.和=有什么不同?
答案:
== 抽象相等,比较时,会先进行类型转换,然后再比较值;
===严格相等,判断两个值相等同时数据类型也得相同。
18.setTimeout和setInterval的区别是什么?
答案:
二者都是用来设置定时操作的。
setTimeout: 设置一个定时器,在定时器到期后执行一次函数或代码段
setInterval: 设置一个定时器,以固定的时间间隔重复调用一个函数或者代码段
19. 请说出以下代码执行结果
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 0);
console.log(i);
}
**答案:**0 1 23 3 3,执行过程如下
var i = 0;
console.log(i); i++;
console.log(i); i++;
console.log(i);i++;
setTimeout(function() {
console.log(i);
}, 0);
setTimeout(function() {
console.log(i);
}, 0);
setTimeout(function() {
console.log(i);
}, 0); //输出 0 1 2 3 3 3
20. 请说出(true+flase)>2+true的执行结果
答案:false
21. 当前代码块输出结果是什么?
var z=10;
function foo(){console.log(z);}
(function(funArg){var z=20;funArg();})(foo);
答案:10,自调用函数。
22. setTimeout(function(){},10)表示什么意思?
答案:每隔10毫秒调用一次函数。
23. 程序中捕获异常的方法?
答案:
try{
}catch(e){
}finally{
}
24. 以下代码执行结果?
var uname = ‘jack’
function change() {
alert(uname) // ?
var uname = ‘lily’
alert(uname) //?
}
change()
答案:undefined lily
25. 如何使用npm下载express模块?
答案:npm install express
26. split和join的区别?
答案:split()将字符串按照指定的字符分割成一个数组,并返回
join()将数组用指定的字符连接成一个字符串,并返回
27. 看下列代码会有什么样的输出?
var foo =“11”+2-“1”;
console.log(foo);
console.log(typeof foo);
答案:111 number
**28. foo = foo||bar ,这行代码是什么意思?**为什么要这样写?
答案:这种写法称之为短路表达式
相当于:
var foo;
if(foo){
foo=foo;
}else{
foo=bar;
}
常用于函数参数的空判断
29. 用js实现随机选取10–100之间的10个数字,存入一个数组,并排序
答案:
function getRandom(istart, iend){
var iChoice = iend -istart +1;
returnMath.floor(Math.random() * iChoice+ istart);
}
var iArray = [];
for(var i=0; i<10; i++){
var result= getRandom(10,100);
iArray.push(result);
}
iArray.sort();
30. 如何获取javascript三个数中的最大值和最小值?
答案:Math.max(a,b,c);//最大值
Math.min(a,b,c)//最小值
31. 实现冒泡排序?
vararray = [5, 4, 3, 2, 1];
vartemp = 0;
for(var i = 0; i <array.length; i++){
for(var j = 0; j <array.length - i; j++){
if(array[j] > array[j + 1]){
temp= array[j + 1];
array[j+ 1] = array[j];
array[j]= temp;
}
}
三、NODEJS
1. 同步和异步有何区别?
答案:
同步:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有等待过程(在一个任务进行中时不能开启其他的任务)。
异步:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待(在一个任务进行中时可以开启其他的任务)。
2. NodeJS中有哪些类型模块,文件操作用哪一个模块?
答案:
模块类型:核心模块、自定义模块、第三方模块。
文件操作:fs模块
3. 对NodeJS的优点和缺点提出自己的看法?
**答案:**CPU密集型任务的特点是进行大量的计算,消耗CPU资源,比如计算圆周率(上千位)、对视频进行编码等, 全靠CPU的运算能力 (一般用C语言,java)
IO(Input / Output)密集型任务,这类任务的特点是CPU消耗很少,大部分时间都在等待IO操作。常见的大部分任务都是IO密集型任务,比如Web应用(一般用脚本语言:python/Nodejs)。
Nodejs设计思想中以事件驱动、异步、非堵塞I/O密集型为核心,他提供的大多数api都是基于事件的、异步的风格。所以非常适合处理高并发请求。此外,与Node服务器交互的客户端代码是由js语言编写的,因此客户端和服务器端都用同一种语言编写,减少了成本。
4. 使用NodeJS完成登录功能(编写HTML页面和路由接口中的代码)?
答案:
HTML页面:
用户:
密码:
读者福利
========
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
由于篇幅过长,就不展示所有面试题了,想要完整面试题目的朋友(另有小编自己整理的2024大厂高频面试题及答案附赠)