综述:对于2018年3/4月份的面试总结,面试中的问题是对自己平时工作内容的思考和积累,一定要平时思考,面试前总结,且不可临时抱佛脚。大公司对于基础知识,网络安全,数据结构和算法,后端基础知识有较高的要求,自己要有自己的认识和思考。并尽可能将其应用到工作中,不断提高自己的能力。
第一部分:
1.阻止冒泡和阻止默认时间的js代码?
2.求最小公倍数,最大公约数的js算法实现?
3.css中的尺寸单位有哪些?px pt em rem cm ?
4.递归实现N!算法,怎样防止栈溢出?
5.数据双向绑定的原理是什么?使用代码实现?在vue中有关于object.defineProperty()的应用,这就是数据双向绑定的核心思想;在vue中也是这样实现的;
6.jq中扩展方法的两种方法的实现?及其实现思路?
7.jq源码解读?和vue源码进行比对?
8.html中的viewport和meta具体有哪些作用?显安的代码中为什么会出现那么多的meta标签,具体作用是什么?
9.现在的稍微高级一点的前端不在进行页面的开发,而是进行页面组件的开发,和框架的开发?要尽快形成一种理解框架,理解组件的能力,当代码高度耦合时,怎样来理清楚思路十分关键;
10、var a="test"; var b=new String("test");之间的区别?感觉一些js的基础知识非常的不扎实,没有透彻理解语言的深层次的含义。要转变学习方法了。
//前者是定义一个普通的js字符串变量,后者是创建一个成员,可以对这个成员进行扩展;
a.sex=1;
alert(a.sex);//输出未定义,因为不是成员,没有这属性
b=new String('123');
b.sex=1;
alert(b.sex); //输出1,成员的属性
11.编写组件和框架代码的能力是在一点一滴中积累的,其中对于继承和this比较重要?
12.在hybrid APP中涉及到前端和安卓的合作,怎样让两者之间能够毫无阻碍的进行语言间的交流十分的重要,weex前端框架项目中,安卓负责对页面的元素进行解析并展示到页面上。实际的核心思想是进行多个json文件、js文件的切换; 当在new元素的时候,是利用玉军构建的ltsdk来进行构建的。这个时候就和安卓之间没有啥关系了;
页面布局由安卓来布局,后来的操作全部由前端来解决;
13.对于对象中的键值对格式的数据进行获取的方法是通过类似数组的下标方式来获取值的。如图所示;和框架相比,自己的实在需要学习的东西太多了;js的基础内容和深层次的东西还没有学习到;
14.在调试手机端的页面时,由于没有f12调试工具,非常需要和微信小程序一样的调试工具,将下属代码加入到页面中即可;非常的方便;特别是在做单页面应用的时候,非常的好,比如vue页面。如果是多个页面,则直接放到公共的js文件即可;
// 加载控制台,将微信小程序的手机端调试工具加入到自己的页面的一段代码,十分的好
export const loadScript = (url, callback) => {
const script = document.createElement('script')
script.onload = () => callback()
script.src = url
document.body.appendChild(script)
}
loadScript(
'https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/3.0.0/vconsole.min.js',
() => {
// eslint-disable-next-line
new VConsole(); //微信那边定义的一个对象,可以获取一系列的调试信息
})
15.es6中的promise的实现原理是什么?牵扯到状态机的问题,一定要有所认识,在16种常见的设计模式中,状态模式中就牵扯到状态机的概念?
第二部分:(fang duoduo前端面试题)
1.请用一段js脚本生成下面这段DOM结构,要求使用标准的DOM方法或者属性?其实还是原生的js的考察?
hello world
2.最近的一次技术挑战?如何解决的?
3.还原视觉稿的步骤是什么?
4.描述下标准化的好处?前端开发中有哪些标准?
5.描述下css选择器的优先级?越全越好?
6.css里的reseting和normaizing的区别?你会怎么选择?
7.怎样使你的网页更适合打印?
8.介绍CSS预编译器(sass,less),并描述利弊?
9.伪元素(::before)一般用在什么地方?
10.描述下两者盒子模型?应用场景?
11.display属性有哪些?
12.inline 和inline-block之间的区别?
13.什么情况下使用translate()替代position,理由是?
14.说下js模块化规范,以及他们之间的区别?
15.描述下jsonp的工作原理?
16.==和===之间的区别?
17.描述下你知道的polyfill?(javascript的兼容器)
18.实现如下函数?
add(2,5); //7
add(2)(5); //7
19.代码的执行结果?
"I am a boy".split("").reverse().join("");
20.foo.x是多少?
var foo={n:1};
var bar=foo;
foo.x=foo={n:2};
21.bom和dom分别是操作什么的api?
22.说下你知道的最近前端最流行的东西?
23.你常去哪些网站?分别学习哪些内容?
24.git使用过程中,如果你在开发者业务,突然另一个分支有一个bug修改,你怎么办?
25.autoprefixer的作用?
26.es6中增加了map对象,如何让老旧的浏览器也支持map对象?说下思路?
27.http缓存有哪些方案?
第三部分:(一彩票公司前端面试题)
1.Linux常用的5个命令?
2.遇到跨域请求如何处理?
3.网站常见的安全漏洞有哪些?如何防范?
4.编写冒泡排序算法程序?
5.什么是闭包?
6.tcp和udp的区别?
7.常见的设计模式有哪些?
8.http和HTTPS的区别?
9.什么是守护进程?如何实现守护进程?