文章转载自掘金JavaScript基本变量和类型1.JavaScript规定了几种语言类型:1.Undefined2.Null3.Boolean4.String5.Number6.Symbol7.Object2.JavaScript底层数据结构是什么objects:数组和对象的底层数据结构3.Symbol类型在实际开发中的应用,可以手动实现一个简单的Symbol:Symbol使用场景4.JavaScript变量在内存中的具体存储形式:js变量与内存使用5.基本类型对应的内置对象,以及它们之间的装箱和拆箱操作:6.理解值类型和引用类型7.null和undefined的区别8.至少三种判断JavaScript数据类型的方法,以及它们的优缺点,如何准确判断数组类型9.可能发生隐式类型转换的场景及转换原则,如何避免或巧妙应用10.小数精度丢失的原因,JavaScript能存储的最大数,最大安全数,JavaScript处理大数的方法,避免精度损失的方法原型和原型链1.理解JavaScript中的原型设计模式和原型规则2.instanceof底层实现原理,手动实现一个instanceof4.实现继承的几种方式及其优缺点5.至少讲一个开源项目(如Node)中原型继承的案例6.能描述new一个对象的详细过程,手动实现一个newoperator7.理解es6class结构和继承Domain和闭包的底层实现原理1.理解词法作用域和动态作用域2.理解JavaScript作用域和作用域链3.理解JavaScript执行上下文栈,可以利用栈信息快速定位问题4.The这个的原理和几个区别使用场景的价值5.闭包的实现原理和作用,可以列举几个闭包在开发中的实际应用6.理解栈溢出和内存泄漏的原理,如何预防7.如何处理循环的异步操作8.理解对于模块化解决的实际问题,可以列举几种模块化的解决方案,理解原理执行机制1.为什么把return放在try里,finally会执行,理解其内部机制2.JavaScript是如何实现异步编程的,你可以详细描述一下EventLoop机制3.什么是宏任务和微任务?4.能快速分析一个复杂的异步嵌套逻辑,并掌握分析方法5.使用Promise实现连载6.Node和浏览器EventLoop的区别7.如何处理海量数据的语法和API,同时保证页面的流畅运行1.理解ECMAScript和JavaScript的关系2.熟练使用es5和es5提供的语法规范es6、3.熟悉JavaScript提供的全局对象(如Date、Math)、全局函数(如decodeURI、isNaN)、全局属性(如Infinity、undefined)4.熟悉map、reduce、filter等高-order函数解决问题5.setInterval注意点,使用settimeout实现setInterval6.JavaScript提供的正则表达式API可以使用正则表达式(邮箱校验、URL解析、去重等)解决常见问题7.JavaScript异常处理方法,统一异常处理SchemeHTML和CSSHTML1。从规范的角度理解HTML,从分类和语义的角度使用标签2.常见页面标签的默认样式,各自的属性,不同浏览器的区别,浏览器兼容性问题的处理方式3.元信息类标签(head、title、meta)的用途及配置方法4、HTML5离线缓存原理5、可以使用CanvasAPI、SVG等绘制高性能动画CSS1。CSS盒模型,不同浏览器的区别2.CSS所有Selectors及其优先级,使用场景,哪些可以继承,如何使用3.什么是CSS伪类和伪元素,它们的区别和实用应用4.HTML文档流的排版规则,CSS几种定位规则,定位参考对象,对文档流的影响,如何选择最佳定位方式,Sprite图的实现原理5.水平和垂直居中方案可以实现6个以上类型及优缺点比较6.BFC实现原理可以解决的问题如何创建一个BFC7.CSS函数可以用来复用代码实现特效8.PostCSS、Sass、Less的异同,以及使用配置,至少掌握一种9.CSS模块化方案,如何配置按需加载,howtoPreventCSSblockingrendering10.熟练使用CSS实现渐变、移动、旋转、缩放等常用动画11.CSS浏览器兼容性编写,了解不同API在不同浏览器下的兼容性12.掌握一个完整的设置响应式布局方案个人技巧1.手写图片的瀑布效果2.使用CSS绘制几何图形(圆形、三角形、扇形、菱形等)3、用纯CSS实现曲线运动(贝塞尔曲线)4、实现常见的布局(三柱、圣杯、双飞翼、天花板),但要说出多种方式,了解它们的优缺点计算机基本编译原理1.理解什么是代码,计算机如何将代码转换成可以运行的目标程序2.正则表达式的匹配原理和性能优化3.如何将JavaScript代码解析成抽象语法树(AST)4.编码原理base64的5.JavaScript中网络协议的几种表达和转换1.了解什么是协议,了解TCP/IP网络协议族的组成,以及各层协议在应用程序中的作用2.三向握手和四次挥手的详细原理,为什么要使用这种机制3.哪些协议是可靠的,TCP有什么手段来保证可靠传递4.DNS的作用,DNS解析的详细过程,DNS优化原理5.CDN的作用和原理6.HTTP请求报文和响应报文的具体组成,可以理解常见请求头的含义,有几种请求方式,有什么区别7.所有HTTP状态码的具体含义,查看异常状态码可以快速定位问题8。HTTP1.1和HTTP2.0带来的变化9.HTTPS的加密原理,如何开启HTTPS,如何劫持HTTPS请求10.了解WebSocket协议的底层原理以及与HTTP的区别。设计模式1.熟练使用常见的前端设计模式编写代码,如单例模式、装饰器模式、代理模式等2.发布订阅模式与观察者模式的异同及其实际应用3.能说出几种设计模式在开发中的实际应用,看懂框架源码设计模式的应用数据结构和算法JavaScript编码能力1.多种方式实现数组去重和扁平化,比较优缺点2.多种方式实现深拷贝,比较优缺点3.手写函数库里化工具函数,了解其应用场景和优势4.手写防抖和节流工具函数,了解其内部原理和应用场景5.实现一个sleep函数和手动实现前端轮子1、手动实现call、apply、bind2、手动实现Promise/A+标准Promise,手动实现asyncawait3。手写一个EventEmitter,实现事件发布和订阅4。可以命名两个方案实现双向绑定,可以手动实现5。手写JSON.stringify、JSON.parse6。手写一个模板引擎,并能说明原理7.手写懒加载、下拉刷新、上拉加载、预加载等效果数据结构1.了解常见数据结构的特点等2.了解数组和字符串的存储原理,并熟练应用解决问题3.了解二叉树、栈、队列、哈希表的基本结构和特点,并能应用解决问题4.了解图和堆的基本结构及使用场景算法1.能计算算法的时间复杂度和空间复杂度,能预估业务逻辑代码的耗时和内存消耗2.至少了解五种排序的实现原理算法,应用场景,优缺点,能快速说出时间和空间复杂度3.了解递归和循环的优缺点,应用场景,能熟练应用到开发中4.能应用回溯算法,贪心算法,除法并攻克算法,解决动态规划等复杂问题5.前端处理海量数据的算法解决方案运行环境浏览器API1.浏览器提供的符合W3C规范的DOM操作API,浏览器差异,兼容性2.浏览器提供的对象模型浏览器(BOM)提供所有全局API,浏览器差异,兼容性3.大量DOM操作,海量数据性能优化(合并操作,Diff,requestAnimationFrame等)4.浏览器海量数据存储,运行性能优化DOM事件流具体实现机制,不同浏览器的区别,事件代理6.前端发起网络请求的几种方式及其底层实现,可以写原生ajax,fetch,熟练使用第三方库7.如何实现避免浏览器的同源策略同源策略,几种方法的异同,如何选择模型8.浏览器提供的几种存储机制,优缺点,以及开发中的正确选择9.浏览器跨表通信浏览器原理1.各个浏览器使用的浏览器JavaScript引擎及其异同,代码中如何区分2.从请求数据到请求结束与服务器的几次交互3.可以详细描述浏览器从输入URL到显示页面的详细过程4.浏览器解析HTML代码的原理和构建DOM树的过程5.浏览器如何解析CSS规则并将其应用到DOM树6.浏览器如何将解析后的DOM树绘制成样式7.浏览器的运行机制,如何配置资源异步和同步加载8.浏览器回流重绘的底层原理,产生原因,如何有效避免9.浏览器的垃圾回收机制,如何避免内存泄漏10.浏览器采用的缓存方案,如何选择和控制合适的缓存方案Nodejs1.了解Node在应用程序中的作用,可以使用Node搭建前端运行环境,使用Node操作文件,操作数据库等。2.掌握一个Node开发框架,如Express、Express和Koa的区别3.熟练使用使用Path、Http、ChildProcess等Node提供的API,了解其实现原理。Node底层运行原理,以及与浏览器的异同。类等面向对象相关概念,TypeScript对面向对象概念的实现2.了解使用TypeScript的好处,掌握TypeScript的基本语法,熟悉ts装饰器的使用3.TypeScript的规则检测原理4.可以在React、Vue等框架中使用TypeScript开发React1。React和vue的类型选择及优缺点,核心架构的区别2.React中setState的执行机制,如何有效管理状态3.React事件的底层实现机制4.React的VirtualDOM与Diff算法内部实现5.ReactFiber的工作原理,解决了哪些问题6.ReactRouter和VueRouter的底层实现原理,动态加载实现原理7.熟练应用ReactAPI,生命周期等,以及HOC,renderprops,Hooks等的应用。High-levelusagetosolveproblems8.基于React的特点和原理,可以手动实现一个简单的ReactVue1.0。熟练使用Vue的API、生命周期、钩子函数4.Vue的事件机制5.从模板到真实DOM的实现机制多端开发1.单页面应用(SPA)原理及优缺点,掌握SPA的快速开发2.了解Viewport,em,rem的原理和用法,resolution,px,ppi,dpi,dp的区别和实际应用3.移动端页面适配方案,不同的适配方案模型如ReactNative:能搭建ReactNative开发环境,熟练开发,了解ReactNative运行原理,适配不同终端5.掌握一门JavaScriptPC客户端开发技术,如Electron:能搭建Electron开发环境,熟练开发,并能了解Electron的运行原理6.掌握一种小程序开发框架或原生小程序开发7.了解多端框架的内部实现原理,至少一种多端框架数据流管理的使用1.掌握React和Vue传统的跨组件通信方案,比较数据流管理框架的异同2.熟练使用Redux管理数据流,并了解其实现原理,中间件实现原理3.熟练使用Mobx管理数据流,了解其实现原理,与Redux库相比有何优势1.掌握至少一种UI组件框架,如antddesign,了解其设计理念及底层实现2.掌握一个图表绘制框架,如Echart,了解其设计理念和底层实现,可以自己实现一个图表GIS开发框架,如百度地图API4。掌握一个可视化开发框架,如Three.js、D35。工具函数库,如lodash、underscore、moment等,了解所用工具类或工具函数的具体实现原理,开发调试1.熟练使用各种浏览器提供的调试工具2.熟练使用代理实现请求代理和抓包的工具,如charls3.能使用Android、IOS模拟器进行调试,掌握真机调试方案4.了解Vue、React等框架调试工具的使用。前端工程项目搭建1.了解npm和yarn依赖包管理的原理,以及两者的区别2.可以使用npm运行自定义脚本3.了解Babel、ESLint、webpack等工具在中的作用项目4.ESLint规则检测原理,常用ESLint配置5.Babel核心原理,可以自己写一个Babel插件6.可以配置一个前端代码兼容方案,比如Polyfill7.Webpack编译原理与构建过程,热更新原理,chunk、bundle、module的区别与应用8.可以熟练配置已有的loader和plugins来解决问题,nginx1.0可以自己写loader和plugins。正向代理和反向代理的特点及实例2.手工搭建一个简单的nginx服务器,3.熟悉常用的nginx内置变量,掌握常用匹配规则的编写4.会使用nginx实现请求过滤,配置gzip,加载balancing等,并能说明其内部原理开发速度1.熟练掌握接口管理和接口mock工具的使用,如yapi2。掌握高效的日志埋点方案,快速使用日志查询工具定位线上问题3.懂TDD和BDD模式,至少会用到一种前端单元测试框架版本控制1.了解Git的核心原理,工作流,SVN的区别2.熟练使用常规Git命令,gitrebase,gitstash等高级命令3.可以快速解决在线分支回滚、在线分支错误合并等复杂问题。、技术选型、环境搭建、全流程开发、部署上线等一套完整的开发流程(包括web应用、手机客户端、PC客户端、小程序、H5等)项目及业务后台-后端技能1.了解后端开发方式及其在应用程序中的作用,至少会使用一门后端语言2.掌握数据最终是如何存储到数据库中的,了解表结构设计以及它们之间的关系tables,至少会用到一个数据库性能优化1.了解前端性能衡量指标,性能监控点,掌握一个前端性能监控方案2.了解常见的Web和App性能优化方案3.SEO排名规则,SEO优化方案,前后端分离SEO4.SSR实现方案、优缺点及其性能优化5.Webpack性能优化方案6.Canvas性能优化方案7.React、Vue等框架使用性能优化方案前端安全1.XSS攻击原理、分类、具体案例、前端如何防御2、CSRF攻击的原理及具体案例、前端如何防御3、HTTP劫持、页面劫持原理、防御措施业务-相关1.能了解开发项目整体业务形态、业务目标、业务架构,能快速定位线上业务问题2.能了解开发项目整体技术架构,能根据新需求快速阅读开发方案,能根据业务告警、在线日志等快速定位和解决在线技术问题。3.能把自己的想法或新技术在业务中付诸实践,尽量在团队中具有一定的不可替代性
