总结
为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。
内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
前端面试题汇总
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
JavaScript
性能
linux
哇咔咔,虽然写过的JS代码不多,好像会耶这道题,我想了一下可以用一个对象来记录,对象的属性就是字符,属性值是其次数。咔咔开写:
function countMaxTimes(str){
var oCount={};
var len=str.length;
//统计每个字符出现次数
while(len--){
var char=str.charAt(len);
if(oCount[char]){
oCount[char]=oCount[char]+1;
}else{
oCount[char]=1;
}
}
//获取出现次数最多的字符
var maxChar='',maxTimes=0;
for (eachChar in oCount){
if(oCount[eachChar]> maxTimes){
maxChar=eachChar;
maxTimes=oCount[eachChar];
}
}
return{
char:maxChar,
times:maxTimes
}
}
因为对JS还用得不是很多,中间想不起怎么遍历对象中的属性了,还卡了好一会儿,后来总算想起for in可以做到啊皇上!
那么补充一下for in的知识:
for(varable in obj或array)
可以遍历对象属性或数组元素
其中,varable是对象的属性名或者数组元素的下标,是下标哦,不是数组元素本身
这道题虽然很基础,但是发现利用对象属性的方式来记录信息真的好好用,之前面试也遇到过。另外这也是我第一次使用obj[varable]的方式来访问属性,这样属性名和属性值一一对应可以记录相对应的两个数据了,这种方式不要太好用哦!
其实数组也是可以这样用的。
2.说说this的三个应用场景
3.JS都有哪些数据类型,分别返回false的时候是什么值。
4.用jQuery实现一个tab选项卡,摔啊,jQuery API还没过完,当时我就懵逼了,不过自己也写了点。
选项卡结构是酱紫的:
<ul id="tab">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
当时不会,但是下来一定要把它给整明白了,自己查了下jQuery的API把它给实现啊哈哈哈:
$(document).ready(function(){
var tabTitles=$('#tab li');
var tabConts=$('#tab~p'); //选项卡内容
tabTitles.on('click',function(){
tabConts.css('display','none');
var index=$.inArray(this,tabTitles);
tabConts.eq(index).css('display','block');
});
});
这里主要用到了$.inArray(value,array)这个方法获取数组中元素的索引值。
好像还有道题吧,尊的不记得了。。。
总结:
-
函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流;
-
它提倡着 纯函数 / 函数复合 / 数据不可变, 谨慎对待函数内的 状态共享 / 依赖外部 / 副作用;
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
Tips:
其实我们很难也不需要在面试过程中去完美地阐述出整套思想,这里也只是浅尝辄止,一些个人理解而已。博主也是初级小菜鸟,停留在表面而已,只求对大家能有所帮助,轻喷🤣;
我个人觉得: 这些编程范式之间,其实并不矛盾,各有各的 优劣势。
理解和学习它们的理念与优势,合理地 设计融合,将优秀的软件编程思想用于提升我们应用;
所有设计思想,最终的目标一定是使我们的应用更加 解耦颗粒化、易拓展、易测试、高复用,开发更为高效和安全;