作者:不想gg
链接: 来源:牛客网一、算法部分
前端算法部分还是很简单的,至今我也没问过什么比较难的算法问题。如果你算法不好就可以直接告诉面试官。不需要过多作假,面试官其实也很聪明的,如果你作弊很快就能发现的。 1、基本排序的方式 冒泡、快排、桶排、堆排序、归并排序、插入排序。 基本也就这些吧。最重要的还是快排和插入排序和堆排序。自己多写几次,有递归形式的再好好看一下使用循环形式达到结果的形式,基本也就没什么问题了。 2、二分搜索等。搜索方式或许是因为我太诚实了吧。。一般我就直接说我的算法不是很好。直接告诉他大多用过就是二分搜索了。其他的面试官也就不怎么问了,毕竟前端岗位。 3、二叉树遍历相关,例如前序遍历中序遍历后序遍历等,深度优先搜索和广度优先最好掌握。还有二叉树的反转。暂时能想到的就是这些吧。TopK问题也有问过。 个人感觉除了以上这些应该就没有什么了。有些面试官曾经直接就告诉我,他大概也就会这些吧。再多了也就不怎么了解了。牛客神器剑指offer,全部刷完,再加上上面这些应该也就没什么问题了。二、计算机网络部分
计算机网络部分知识点个人感觉不是特别多,基本面试官也只是简单问一下,以下这些你能说明白就没什么大问题了。 1.最重要的就是http协议。毕竟前端大多都和http协议搞事情。http协议大多包含了以下几种问题吧http报文解构都包含什么(大致就是那个三部分,请求实体、请求头、请求行这些)http协议常用的状态码(https://blog.csdn.net/xiaozhuxmen/article/details/51934706)http头部关于缓存的字段http和https的区别http1.0 1.1 2 大致的区别 复制代码
除此之外暂时想不到其他的了。缓存字段和200、404、304之类非常常用的状态码一定要记住。
2.tcp的三次握手和四次挥手。除此之外再就没什么了。 3.udp和tcp的比较等等三、 html和css基础部分。
这个部分的知识点非常多非常多。一时半会也不可能将所有的都囊括在内,先列出非常重要的吧。 1.盒模型概念 2.position定位属性和相关的关系,例如relative占用文档流,而absolute和fixed却不占用,还有relative和absolute结合使用会有变化,一定要搞懂。 3.display相关属性,常用的block、inline、等等。都要弄明白。 4.IFC和BFC问题。 5.双飞翼布局。 6.垂直居中、水平居中的多种方式和方法,这俩个都有很多的方法,尽量每个都记下来4个方法以上。应该就没问题了。但是要注意能说明白每一个方式方法的限制。例如我们使用line-height的时候需要知道高度等等。而且还有要注意字体的居中和块级元素等居中是不一样的。 7.圣杯布局(别人考过,我基本没被问过。) 8.rem、em的使用。 9.less等预处理语言。 10.媒体查询。 11.vh和vw,当然这个考的实在太少。 12.h5的语义化部分。这个其实在面试上是比较重要的一个问题,例如楼主蘑菇街当时就有一个问题问我实现删除线怎么办。当然有html基础标签和css样式了。他就问哪种更好。当时楼主一脸蒙蔽的说html的方式更好。最后被问原因的时候说了一大堆不重要的,最后面试官告诉我是在语义化的方面考虑的。。。 13.h5 的web worker 还有websocket。这些不需要你真正使用过,但是要明白他们在什么场景下使用。就可以了。自己拿菜鸟教程上代码的实验一下就可以了。websocket内部还有一些关于协议的部分。要自己弄懂。 14.h5的语义化标签都有什么,大致看一下,记住一部分。还有新加的例如video这些东西。 15.css3的都很重要,包括transform、transition、animate这些都好好看一下。 16.css选择器的优先级,也就是class id 元素选择器这些的优先级计算。 17.css样式表引用的优先级部分。例如link引用或者行内都设置了字体颜色,问字体此时显示什么字体。 18.清除浮动。 19.canvas 某些特别的公司部门可能需要,但是我至今没有被问过。 20.css实现响应式的方式。 除此之外暂时也想不到其他的了。如果再有想到会再次添加。四、js部分
这个是重中之重了,如果你js掌握的非常非常好,面试官的问题你都回答上来了,那么html、css部分问题没答上也没有什么。毕竟js才是前端的重点。 1.js的作用域作用域链。 2.js的原型原型链,来一张巨经典的图片。能看懂或者你给面试官讲明白就ok了。还有instanceOf那些判断。 3.js的dom元素操作插入删除等等。 4.js的垃圾回收机制。(问的比较少)。 5.js中String或者Array或者Math内部常用的方法。这些在菜鸟教程上都可以看的。 6.ajax请求详细怎么实现,和其中的响应状态。 7.js的基础类型和引用类型 8.事件委托、事件冒泡、事件捕获。 9.addEventlistener和正常的οnclick=()=> 的区别 10.js中new和object.creat区别 11.除了js中DOM的基础方法还有BOM中的方法。比如通过js直接取出相应的url的端口号,或者是协议名,或者url整体。 12.浏览器输入url之后最后网页渲染出来经过了什么( 13.js跨域实现。我大概回答的有webpack和nginx等代理跨域。CORS和jsonp等。一般这些就可以了 14.浏览器的同源策略 15.浏览器的回流和重绘,就是reflow那些东西。 16.call、bind、apply区别。 17.js实现继承怎么实现。原理是? 这个其实和上面的原型链原型是一起的。百度一下,多记住几种方式。 18.请求get和post的区别 19.js方法参数argument 20.深拷贝和浅拷贝,还可以引入序列化。还要明白序列化的缺点。 以下都是es6 21.promise,最好自己声明一个构造函数尝试去实现,这样面试官会觉得你学的很认真。如果实在自己写不出来上网查一下promise的实现原理或者源码应该就有。 22.闭包 23.let和const,最好全面一点解释,包括可以说一下变量提升引入一下var,和这些在什么场景下去使用。 24.generator 25.es6加上symbol的基础数据类型 26.set类型可以实现数组去重等。 27.箭头函数 重点,很多时候都会问 包括里面的简便写法和内部的this指针指向等等 28.解构赋值 29.es6新增加的正则符号。 30.或者直接问你es6有什么新加的东西,说得越多越好 es6我们可以去http://wiki.jikexueyuan.com/project/es6/这里面去学习。当然想要更深了解的话就需要看一下阮一峰大大的那本书了。但是这个我觉得面向面试足够了。 以下就是亮点部分了,面试总要有一些亮点告诉面试官你基础很好。因为其实和面试官拽技术没必要的,人家真正搞开发的,真的拽技术能甩你8条大马路(当然真正的大大大佬请无视我这句话),而且我是面向咱们很多还是在蒙圈的同学们写的。都是很基础的东西,毕竟不能说所有人都瞄准bat进发对吧? 1.js单线程和js具体怎么实现异步的。大概的技术名词有事件队列、执行栈、宏任务、微任务。具体的各位老铁们百度吧。。 2.webworke做分线程 3.vue-router原理实现。多看源码之类的 4.nginx负载均衡。redis共享数据等等等。 5.asm.js(这个我想很多人没听过都。。这个是我自己看的一个技术。比较有意思的。因为面试官总会问你最近在看什么比较新的技术这样的问题,专门准备的)。因为我大多都是使用vue和node等的技术栈,所以vue也会问很多(看完vue官方文档,基本就没问题了) 1.vue的生命周期
2.双向数据绑定。这个最好也是自己实现一下 理解更深 3.vue父子组件传递参数 4.vue传递参数方法 5.vue自定义组件 6.vue自定义指令 7.vuex组成和原理 8.vue-router的原理,例如hashhistory和History interface这些东西要弄明白。其实看一下源码就好了,看不懂可以直接看解析的相关技术博客。 9.vue的seo问题 10.预渲染和ssr 11.生命周期内create和mounted的区别 12.监听watch等等 13.登录验证拦截还有一些其他的问题。
1.跨域。 2.网络安全,大多就是csrf和xss看明白原理和解决方式就可以了。 3.数据结构的栈、队列、链表、等等这些基础的数据结构要明白是什么。 4.设计模式( 5.数据库相关操作语句(这个问得比较少,但是基础的数据库语句还是要学的,还是菜鸟教程。看一下就行了) 6.linex基础指令,一般很少问。就算问也是问你知道什么指令 7.bootstrap实现栅格的原理 8.webpack相关配置。例如跨域之类的