本帖最后由 逆风TO 于 2019-1-7 13:56 编辑
陕西恒东网络科技有限责任公司 公司地址:高新锦业路绿地中心A座
问:之前工作中用过webpack吗? 答:用过, webpack 是一个前端自动化构建工具,在 webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个bundle。
问:webpack 可以做什么? 答:代码转换: TypeScript 编译成 Javascript、SCSS、LESS编译成CSS。 文件优化:压缩JavaScript、CSS、HTML代码,压缩合并图片。 代码分割:提取多个页面的公共代码、提取首屏不需要执行部分的代码让其异步加载。 模块合并:在采用模块化的项目里会有很多个模块和文件,需要构建功能把模块分类合并成一个文件。 自动刷新:监听本地源代码的变化,自动重新构建、刷新浏览器。
问:你能简单说一下浏览器渲染过程不? 答:解析HTML,生成DOM树,解析CSS,生成CSSOM树 将DOM树和CSSOM树结合,生成渲染树(Render Tree) Layout(回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信 Painting(重绘):根据渲染树以及回流得到的几何信息,得到节点的绝对像素 Display:将像素发送给GPU,展示在页面上。
问:html5有哪些新特性 canvas(画布),audio 定义音频内容,video 定义视频(video 或者 movie) 地理定位,web存储:localStorage,拖拽控制: draggable="true" 使元素可拖动, 表单 问:你都知道哪些浏览器内核?IE: trident 内核 Firefox:gecko内核 Safari:webkit内核 (苹果浏览器) Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核 Chrome:Blink(基于webkit,Google与OperaSoftware共同开发) 问:web开发中会话跟踪的方法有哪些 cookie,session,url重写,隐藏input,ip地址 问:angular中是怎么拦截服务? 答:在config配置里注入需要拦截的服务的名字+Provider来拦截 问:angular的数据绑定采用什么机制? 答:脏检查机制。 双向数据绑定是 AngularJS 的核心机制之一。当 view 中有任何数据变化时,会更新到 model ,当 model 中数据有变化时,view 也会同步更新,显然,这需要一个监控。
问:优化Angular 应用的性能 答: 减少监控项(比如对不会变化的数据采用单向绑定) 主动设置索引(指定 track by,简单类型默认用自身当索引,对象默认使用 $$hashKey,比如改为 track by item.id) 降低渲染数据量(比如分页,或者每次取一小部分数据,根据需要再取) 数据扁平化(比如对于树状结构,使用扁平化结构,构建一个 map 和树状数据,对树操作时,由于跟扁平数据同一引用,树状数据变更会同步到原始的扁平数据) 问:都使用过哪些框架? Vue,angular,jquery,zepto,backbone,require,还有一些UI组件,比如emelent,mui,mint-ui, 解释ajax的工作原理Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
问:你认为前端应该如何高质量完成工作?首先划分成头部、body、脚部。实现效果图是最基本的工作,精确到2px; 与设计师,产品经理的沟通和项目的参与 做好的页面结构,页面重构和用户体验 处理hack,兼容、写出优美的代码格式针对服务器的优化、拥抱 HTML5。为问:什么利用多个域名来存储网站资源会更有效? 确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他郁闷访问网站,并且不同的资源放到不同的服务器上有利于减轻单台服务器的压力。 问:eval是做什么的?它的功能是把对应的字符串解析成JS代码并运行,应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行) 问:webpack打包速度慢,你觉得可能的原因是什么,该如何解决模块太多,Webpack可以配置 externals 来将依赖的库指向全局变量,从而不再打包这个库 或者dllplugin,webpack-parallel-uglify-plugin 并行压缩,CommonsChunkPlugin提取公共的模块,happypack 多进程构建
|