time = (fullS / strWrap.data(‘scrollamount’)) * 1000;
if (parseFloat(strMove.css(‘left’)) != 0) {
fullS = (fullS + strWrap.width());
time = (fullS - (strWrap.width() - parseFloat(strMove.css(‘left’)))) / strWrap.data(‘scrollamount’) * 1000;
}
return time;
},
moveFuncId1 = false,
moveFunc1 = function () {
if (loop != 0) {
strMove.stop(true).animate({
left: leftPos
}, timeFunc1(), ‘linear’, function () {
$(this).css({
left: strWrap.width()
});
if (loop == -1) {
moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
} else {
loop–;
moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
}
});
}
};
strWrap.data({
moveId: moveFuncId1 ,
moveF : moveFunc1
})
if(!p.inverthover){
moveFunc1();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
clearTimeout(moveFuncId1);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc1();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragLeft;
var dir = 1;
var newX;
var oldX = e.clientX;
//drag
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newX = e.clientX;
if(newX > oldX){
dir = 1
}else{
dir = -1
}
oldX = newX
dragLeft = k1 + (e.clientX - strWrap.offset().left);
if (!p.circular) {
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = strWrap.width();
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > strWrap.width() && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
}else{
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = 0;
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > 0 && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
}
strMove.stop(true).css({
left: dragLeft
});
//drag
}).on(‘mouseup’, function () {
$(this).off(‘mousemove’);
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
if (p.runshort) {
strMove.css({
left: strWrap.width()
});
var
strMoveLeft = strWrap.width(),
k1 = 0,
timeFunc = function () {
time = (strMove.width() + strMove.position().left) / strWrap.data(‘scrollamount’) * 1000;
return time;
};
var moveFunc = function () {
var leftPos = -strMove.width();
strMove.animate({
left: leftPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
left: strWrap.width()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
}
});
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragLeft;
var dir = 1;
var newX;
var oldX = e.clientX;
//drag
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newX = e.clientX;
if(newX > oldX){
dir = 1
}else{
dir = -1
}
oldX = newX
dragLeft = k1 + (e.clientX - strWrap.offset().left);
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = strWrap.width();
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > strWrap.width() && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
strMove.stop(true).css({
left: dragLeft
});
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
strWrap.addClass(‘str_static’);
}
};
};
if (p.direction == ‘right’) {
strWrap.height(strMove.outerHeight())
strWrap.addClass(‘str_right’);
strMove.css({
left: -strMove.width(),
right: ‘auto’
})
if (strMove.width() > strWrap.width()) {
var leftPos = strWrap.width();
strMove.css({
left: 0
})
if (p.circular) {
if (!p.xml) {
circCloneHor()
//Определяем крайнюю точку
leftPos = strMove.width();
}
}
var
k2 = 0;
timeFunc = function () {
var
fullS = strWrap.width(), //крайняя точка
time = (fullS / strWrap.data(‘scrollamount’)) * 1000; //время
if (parseFloat(strMove.css(‘left’)) != 0) {
fullS = (strMove.width() + strWrap.width());
time = (fullS - (strMove.width() + parseFloat(strMove.css(‘left’)))) / strWrap.data(‘scrollamount’) * 1000;
}
return time;
};
var moveFunc = function () {
if (loop != 0) {
strMove.animate({
left: leftPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
left: -strMove.width()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragLeft;
var dir = 1;
var newX;
var oldX = e.clientX;
//drag
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newX = e.clientX;
if(newX > oldX){
dir = 1
}else{
dir = -1
}
oldX = newX
dragLeft = k2 + (e.clientX - strWrap.offset().left);
if (!p.circular) {
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = strWrap.width();
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > strWrap.width() && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
}else{
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = 0;
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > 0 && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
}
strMove.stop(true).css({
left: dragLeft
});
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
if (p.runshort) {
var k2 = 0;
var timeFunc = function () {
time = (strWrap.width() - strMove.position().left) / strWrap.data(‘scrollamount’) * 1000;
return time;
};
var moveFunc = function () {
var leftPos = strWrap.width();
strMove.animate({
left: leftPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
left: -strMove.width()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragLeft;
var dir = 1;
var newX;
var oldX = e.clientX;
//drag
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newX = e.clientX;
if(newX > oldX){
dir = 1
}else{
dir = -1
}
oldX = newX
dragLeft = k2 + (e.clientX - strWrap.offset().left);
if(dragLeft < -strMove.width() && dir < 0){
dragLeft = strWrap.width();
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
if(dragLeft > strWrap.width() && dir > 0){
dragLeft = -strMove.width();
strMoveLeft = strMove.position().left;
k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
}
strMove.stop(true).css({
left:dragLeft
});
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
strWrap.addClass(‘str_static’);
}
};
};
if (p.direction == ‘up’) {
strWrap.addClass(‘str_vertical’);
if (strMove.height() > strWrap.height()) {
var topPos = -strMove.height();
if (p.circular) {
if (!p.xml) {
circCloneVert();
topPos = -(strMove.height() + (strMove.height() - strWrap.height()));
}
}
if (p.xml) {
strMove.css({
top:strWrap.height()
})
}
var
k2 = 0;
timeFunc = function () {
var
fullS = Math.abs(topPos),
time = (fullS / strWrap.data(‘scrollamount’)) * 1000;
if (parseFloat(strMove.css(‘top’)) != 0) {
fullS = (fullS + strWrap.height());
time = (fullS - (strWrap.height() - parseFloat(strMove.css(‘top’)))) / strWrap.data(‘scrollamount’) * 1000;
}
return time;
};
var moveFunc = function () {
if (loop != 0) {
strMove.animate({
top: topPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
top: strWrap.height()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragTop;
var dir = 1;
var newY;
var oldY = e.clientY;
//drag
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newY = e.clientY;
if(newY > oldY){
dir = 1
}else{
if(newY < oldY){
dir = -1
}
}
oldY = newY
dragTop = k2 + e.clientY - strWrap.offset().top;
if (!p.circular){
if(dragTop < -strMove.height() && dir < 0){
dragTop = strWrap.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
if(dragTop > strWrap.height() && dir > 0){
dragTop = -strMove.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
}else{
if(dragTop < -strMove.height() && dir < 0){
dragTop = 0;
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
if(dragTop > 0 && dir > 0){
dragTop = -strMove.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
}
strMove.stop(true).css({
top: dragTop
});
//drag
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
if (p.runshort) {
strMove.css({
top: strWrap.height()
});
var k2 = 0;
var timeFunc = function () {
time = (strMove.height() + strMove.position().top) / strWrap.data(‘scrollamount’) * 1000;
return time;
};
var moveFunc = function () {
var topPos = -strMove.height();
strMove.animate({
top: topPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
top: strWrap.height()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragTop;
var dir = 1;
var newY;
var oldY = e.clientY;
//drag
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newY = e.clientY;
if(newY > oldY){
dir = 1
}else{
if(newY < oldY){
dir = -1
}
}
oldY = newY
dragTop = k2 + e.clientY - strWrap.offset().top;
if(dragTop < -strMove.height() && dir < 0){
dragTop = strWrap.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
if(dragTop > strWrap.height() && dir > 0){
dragTop = -strMove.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
//*drag
strMove.stop(true).css({
top: dragTop
});
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
strWrap.addClass(‘str_static’);
}
};
};
if (p.direction == ‘down’) {
strWrap.addClass(‘str_vertical’).addClass(‘str_down’);
strMove.css({
top: -strMove.height(),
bottom: ‘auto’
})
if (strMove.height() > strWrap.height()) {
var topPos = strWrap.height();
if (p.circular) {
if (!p.xml) {
circCloneVert();
topPos = strMove.height();
}
}
if (p.xml) {
strMove.css({
top:-strMove.height()
})
}
var
k2 = 0;
timeFunc = function () {
var
fullS = strWrap.height(), //крайняя точка
time = (fullS / strWrap.data(‘scrollamount’)) * 1000; //время
if (parseFloat(strMove.css(‘top’)) != 0) {
fullS = (strMove.height() + strWrap.height());
time = (fullS - (strMove.height() + parseFloat(strMove.css(‘top’)))) / strWrap.data(‘scrollamount’) * 1000;
}
return time;
};
var moveFunc = function () {
if (loop != 0) {
strMove.animate({
top: topPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
top: -strMove.height()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
};
strWrap.data({
moveF : moveFunc
})
if(!p.inverthover){
moveFunc();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass(‘str_active’);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass(‘str_active’);
$(this).off(‘mousemove’);
moveFunc();
});
if (p.drag) {
strWrap.on(‘mousedown’, function (e) {
if(p.inverthover){
strMove.stop(true);
}
//drag
var dragTop;
var dir = 1;
var newY;
var oldY = e.clientY;
//drag
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
$(this).on(‘mousemove’, function (e) {
fMove = true;
//drag
newY = e.clientY;
if(newY > oldY){
dir = 1
}else{
if(newY < oldY){
dir = -1
}
}
oldY = newY
dragTop = k2 + e.clientY - strWrap.offset().top;
if (!p.circular){
if(dragTop < -strMove.height() && dir < 0){
dragTop = strWrap.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
if(dragTop > strWrap.height() && dir > 0){
dragTop = -strMove.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
}else{
if(dragTop < -strMove.height() && dir < 0){
dragTop = 0;
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
if(dragTop > 0 && dir > 0){
dragTop = -strMove.height();
strMoveTop = strMove.position().top;
k2 = strMoveTop - (e.clientY - strWrap.offset().top);
}
}
strMove.stop(true).css({
top: dragTop
});
//drag
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
if (p.runshort) {
var k2 = 0;
var timeFunc = function () {
time = (strWrap.height() - strMove.position().top) / strWrap.data(‘scrollamount’) * 1000;
return time;
};
var moveFunc = function () {
var topPos = strWrap.height();
strMove.animate({
top: topPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
top: -strMove.height()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
strWrap.data({
moveF : moveFunc
})
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。
《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取
op(true).css({
top: dragTop
});
//drag
}).on(‘mouseup’, function () {
if(p.inverthover){
strMove.trigger(‘mouseenter’)
}
$(this).off(‘mousemove’);
setTimeout(function () {
fMove = false
}, 50)
});
return false;
})
.on(‘click’, function () {
if (fMove) {
return false
}
});
} else {
strWrap.addClass(‘no_drag’);
};
}
} else {
if (p.runshort) {
var k2 = 0;
var timeFunc = function () {
time = (strWrap.height() - strMove.position().top) / strWrap.data(‘scrollamount’) * 1000;
return time;
};
var moveFunc = function () {
var topPos = strWrap.height();
strMove.animate({
top: topPos
}, timeFunc(), ‘linear’, function () {
$(this).css({
top: -strMove.height()
});
if (loop == -1) {
setTimeout(moveFunc, p.scrolldelay);
} else {
loop–;
setTimeout(moveFunc, p.scrolldelay);
};
});
};
strWrap.data({
moveF : moveFunc
})
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-FD9FSoJ2-1712679289358)]
[外链图片转存中…(img-feUBOolH-1712679289359)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-xeYVxlmc-1712679289359)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。
《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取
[外链图片转存中…(img-sgaVGIAv-1712679289359)]
[外链图片转存中…(img-zf6paT1V-1712679289360)]
[外链图片转存中…(img-qXqmw9OE-1712679289360)]