2024年前端最全前端校招字节跳动面试 第四篇(1),专题解析

最后

在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理

7、如何实现三列布局?


三列布局,一般指两端固定宽度,中间宽度自适应的布局方式。

参考字节跳动:圣杯布局,有几种办法

当然,这个可以谈到grip,table

8、CSS实现三角形。(敲代码)不用多说


将一个div的宽度和高度设置为0,然后设置边框样式

.triangle{

width: 0;

height: 0;

border-top: 50px solid black;

border-right: 50px solid red;

border-bottom: 50px solid green;

border-left: 50px solid blue;

}

将一个div的border都设置成50px粗,并且不同颜色,结果如下图所示:

把边框宽度设置成50px,计算机处理时,在边框交接处,一边占用一半的面积。

将左右下边框设置成transparent,就可以画出一个三角形

.triangle{

width: 0;

height: 0;

border-top: 50px solid black;

border-right: 50px solid transparent;

border-bottom: 50px solid transparent;

border-left: 50px solid transparent;

}

/下面代码更加简洁/

.triangle{

width: 0;

height: 0;

border: 50px solid transparent;

border-top-color: black ;

}

就实现了三角形。

优化下:将下边框的长度设置为0,实现一个最小空间的三角形

上面产生的三角形,实质上占位还是一个正方形,所以我们应该将这个三角形占用的空间尽可能缩小。不设置下边框

.triangle{

width: 0;

height: 0;

border-top: 50px solid black;

border-right: 50px solid transparent;

border-left: 50px solid transparent;

}

9.设计一个简单的任务队列,要求分别在1,3,4秒后打印出”1“,”2“,”3“


new Quene()

.task(1000, () => {

console.log(1)

})

.task(2000, () => {

console.log(2)

})

.task(1000, () => {

console.log(3)

})

.start()

function Quene() { … }

A:看这代码显然是链式调用,那就是Promise.then了

function Quene() {

this.quene = [];

}

Quene.prototype.task = function (time, callback) {

this.quene.push({ time, callback });

return this;

};

Quene.prototype.start = function () {

const quene = this.quene;

let result = Promise.resolve();

quene.forEach((item) => {

result = result.then(() => {

return new Promise((resolve, reject) => {

setTimeout(() => {

resolve(item.callback());

}, item.time);

});

});

});

return result;

};

new Quene()

.task(1000, () => {

console.log(1)

})

.task(2000, () => {

console.log(2)

})

.task(1000, () => {

console.log(3)

})

.start()

要是没有题目的限制,用async await超简单

async function one() {

setTimeout(function() {

console.log(1);

}, 1000);}

async function two() {

setTimeout(function() {

console.log(2);

}, 3000);}

async function three() {

setTimeout(function() {

console.log(3);

}, 4000);}

async function run() {

var p1 = await one();

var p2 = await two();

var p3 = await three();

}

run();

10、http的七层模型


SSL协议到底工作在OSI模型中的哪一层


SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:

  1. SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

  2. SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

会话层的功能和表示层的功能正好和SSL记录协议和握手协议的功能一样,我想这两层协议就应该分别工作在这上面!

11.给定一个升序整数数组[0,1,2,4,5,7,13,15,16],找出其中连续出现的数字区间如下:


[“0->2”,”4->5“,“7”,“13”,“15->16”]

A:还算比较简单的算法题吧,还好当时做出来了,不然可能就止步于此。。也希望大家能谈点自己对这道题的解法

function Arr(arr) {

var len = arr.length,

j,

newArr = [],

str = ‘’;

for (var i = 0; i < len; i++) {

j = i;

if (arr[i] + 1 === arr[j + 1]) {

while (arr[j] + 1 === arr[j + 1]) {

str = ‘->’ + arr[j + 1];

j++;

}

str = arr[i] + str;

newArr.push(str)

i = j

} else {

newArr.push(arr[i].toString())

}

}

return newArr;

}

12、xss和跨站伪造攻击防御


参考

WEB安全之-CSRF(跨站请求伪造)

web安全之XSS攻击原理及防范

13、类数组对象是什么?


1.定义

满足两个条件的对象就是类数组。

  • (1)有length属性,最好加上push方法

  • (2)属性要为索引属性

如下:

var arr = {

“0”: “a”,

“1”: “b”,

“2”: “c”,

length: 3

};

类数组并不能直接使用数组的方法,需要用call()或者apply()调用数组的方法。、

类似于这样

var obj = {

“0”: “a”,

“1”: “b”,

“2”: “c”,

length: 3

};

Array.prototype.join.call(obj,“+”); //“a+b+c”

2. 类数组转化为数组

第一种方法:

var obj = {

“0”: “a”,

“1”: “b”,

“2”: “c”,

length: 3

};

最后

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端视频资料:

“a”,

“1”: “b”,

“2”: “c”,

length: 3

};

Array.prototype.join.call(obj,“+”); //“a+b+c”

2. 类数组转化为数组

第一种方法:

var obj = {

“0”: “a”,

“1”: “b”,

“2”: “c”,

length: 3

};

最后

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-NAup86GF-1714995400806)]

前端视频资料:
[外链图片转存中…(img-DXZg1u8y-1714995400808)]

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值