更多课程 选择中心


Web培训

400-111-8989

Web培训

Web前端培训 > Web职场 > 正文

2020年Web前端面试题及答案汇总


今天小编要跟大家分享的文章是关于2020年Web前端面试题及答案汇总。正准备参加Web前端面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。

2020年Web前端面试题及答案汇总

一、MySQL数据库

1. MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

答案:

Varchar是变长字符串,最多存储的大小是65535字节,查询速度相对较慢;Char 是定常字符串,最多存储的大小是255字节,查询速度相对较快;

varchar(50)表示:Mysql4.0 表示存放50个字节,5.0存放50个字符。

2. 简述浏览器打开#显示页面,中间都经过哪些过程?

答案:

向DNS服务器获取域名对应的IP地址并返回浏览器,通过IP地址向Web服务器发请求,Web服务器从文件服务器获取网页中所需要的文件,从数据库服务器获取网页中所需要的数据,最后讲完整的网页相应给浏览器。

3. 如何解决MySQL中存储中文乱码问题?

答案:

脚本文件采用UTF8编码

客户端连接数据库使用UTF8编码

服务器端创建数据库使用UTF8编码

4.Float和Double的区别是什么?

答案:

FLOAT(单精度浮点数)类型 数据可以存储至多8位十进制数,并在内存中占4字节。

DOUBLE(双精度浮点数)类型 数据可以存储至多18位十进制数,并在内存中占8字节。

5. 把数据id等于1的名字oldboy更改为oldgirl?

答案:

update test set name='oldgirl' where id=1;

6.如何登录mysql数据?

答案:

mysql -uroot。

二、JS基础

1. continue和 break有什么区别?

答案:

break和continue都是用来控制循环结构的:

break终止循环,跳出循环体执行循环后面的语句。

continue跳过本次循环,执行下一次循环。

2. i++和++i的区别?

答案:

i++ :先用i值后加1,

++i :先加1后用i值,

计算:var n=5; 求 var num=n++ + ++n + n++ + ++n+n; //37

3. JavaScript都有哪些数据类型?

答案:

原始类型:数值型/字符串型/布尔型/undefined/null

引用类型:对象

4. 自调用函数是什么?用于什么地方?

答案:立即执行的函数。 (function(){ //函数体 })();

用于创建一个局部作用域。

5. slice和splice有什么区别?

答案:

slice截取子数组 ,从指定的数组中,截取几个连续的元素组成一个新数组

splice允许从指定数组中,删除一部分元素,同时再添加另一部分元素

6. typeof返回的类型有哪些?

答案:

number、string 、boolean 、undefined 、object 、function

ex:

var arr=[1,2,3,4,5];

console.log(typeof(arr)); //object

function myDemo(){

return function test(){};

}

console.log(typeof(myDemo())); //function

7. 取 1~11之间的随机数 (即包括1不包括11)?

答案:

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); s

etTimeout(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页面:

<form method="post" action="/user/login">

用户:<input type="text" name="uname"><br>

密码:<input type="text" name="upwd"> <br>

<input type="submit" >

</form>

user.js路由

const express=require('express');

const pool=require('../pool.js');

var router=express.Router();

router.post('/login',(req,res)=>{

var obj=req.body;

var $uname=obj.uname;

if(!$uname){

res.send({code:401,msg:'uname required'});

return;

}

var $upwd=obj.upwd;

if(!$upwd){ res.send({code:402,msg:'upwd required'});

return;

}

var sql='SELECT * FROM xz_user WHERE uname=?AND upwd=?'; pool.query(sql,[$uname,$upwd],(err,result)=>{

if(err) throw err;

if(result.length>0){

res.send({code:200,msg:'login success'});

}else{

res.send({code:301,msg:'login error'});

} });

});

//路由器导出

module.exports=router;

5. 什么是Nodejs?

Nodejs是一个JavaScript的运行环境,是一个服务器端的“JavaScript解释器”,用于方便高效地搭建一些响应速度快、易于扩展的网络应用。它采用事件驱动、异步编程,为网络服务而设计

6. nodejs适用于哪些地方?

高并发、聊天、实时消息推送

7. npm是什么?

npm是nodejs包管理和分发的工具,用于管理node包。如安装、卸载、发布、查看等.

8. npm的好处是什么

通过npm,可以安装和管理项目的依赖,且可以指明依赖项的具体版本号。

9. Node.js中导入模块和导入js文件写法上有什么区别?

nodejs引入模块,直接使用名字导入即可

const express = require("express");

导入js文件,需要使用文件的路径,如:

const student = require("./pool.js");

10. console有哪些常用方法?

console.log/info/error/warn/time/timeEnd

11. express response有哪些常用方法?

o res.download() 弹出文件下载

o res.end() 结束response

o res.json() 返回json

o res.jsonp() 返回jsonp

o res.redirect() 重定向请求

o res.render() 渲染模板

o res.send() 返回多种形式数据

o res.sendFile 返回文件

o res.sendStatus() 返回状

12. node中的Buffer如何应用??

Buffer是用来处理二进制数据的,比如图片,mp3,数据库文件等.Buffer支持各种编码解码,二进制字符串互转

13. 实现一个简单的http服务器?

var http = require('http'); //加载http模块

var server=#(function(req, res) {

res.writeHead(200,{'Content-Type': 'text/html'});

res.write('hello world');

res.end(); //结束输出流

});

server.listen(3000);

以上就是小编今天为大家分享的关于2020年Web前端面试题及答案汇总的文章,希望本篇文章能够对正在从事Web前端工作和准备参加Web前端面试的小伙伴们有所帮助,想要了解更多Web前端知识的小伙伴们记得关注达内Web培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的Web前端工程师

文章来源:原创 事业有成的张啦啦 前端阳光

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:2020年Web前端学习路线总结
下一篇:提高工作效率的WEB前端开发工具有哪些

Web前端开发是做什么的?

中级Web前端开发工程师

小程序和h5的区别和优势

怎么成为高级前端开发工程师?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

贵州省

云南省

广西省

海南省