2022-03-25 17:46:09
腾讯QQ浏览器|IMA二面主要围绕前端技术深度、性能优化、项目经验及学习能力展开,涉及缓存机制、渲染方案、工程化工具、框架原理、项目难点及科技前沿等多个方面。 以下是具体内容梳理:
一、缓存机制与CDN优化强缓存通过Cache-Control(如max-age)或Expires控制资源有效期,直接使用本地缓存,减少HTTP请求;协商缓存通过Last-Modified/If-Modified-Since或ETag/If-None-Match校验资源是否更新,需与服务端交互确认。
CDN优化:通过就近节点分发静态资源,减少传输延迟;结合缓存策略(如强缓存静态资源、协商缓存动态资源)提升命中率;需关注CDN边缘节点的缓存一致性及回源策略。
代码分割(Code Splitting)、按需加载(Dynamic Import)、预加载(preload/prefetch)减少首屏资源体积。
使用async/defer异步加载非关键JS,避免阻塞渲染。
CSS优化:内联关键CSS(Critical CSS)、非关键CSS异步加载或使用media属性按需加载。
策略:区分用户行为埋点(如点击、滑动)与性能埋点(如首屏时间、资源加载耗时);采用无痕埋点(自动采集通用事件)与手动埋点(特定业务逻辑)结合。
API:如navigator.sendBeacon(异步发送数据,避免阻塞页面卸载)、Performance API(获取性能指标)。
SSR(服务端渲染):服务端生成完整HTML,首屏加载快,但交互需“水合”(Hydration)附加事件;CSR(客户端渲染):首屏依赖JS动态渲染,体验差但交互灵活;SSG(静态生成):预生成静态页面,适合内容固定场景;ISR(增量静态再生):部分页面动态更新,平衡静态与动态需求。
React:基于Fiber架构的协调引擎,通过setState触发重新渲染,依赖虚拟DOM Diff优化;响应式通过useState/useReducer等Hooks或类组件的this.state实现。
Vue:基于Object.defineProperty(Vue 2)或Proxy(Vue 3)的响应式数据劫持,数据变化自动触发视图更新。
Vite:基于原生ES Modules,开发环境启动快(无需打包),生产环境使用Rollup优化;适合现代前端项目。
Webpack:功能全面,支持复杂场景(如代码分割、自定义插件),但配置复杂,开发环境启动慢。
数据加载:虚拟列表(Virtual List)技术,仅渲染可视区域元素,减少DOM节点;分页或无限滚动加载,结合防抖/节流控制请求频率。
白屏问题:预加载下一页数据、骨架屏(Skeleton Screen)提升用户体验;使用IntersectionObserver监听元素可见性,优化加载时机。
总结:二面侧重技术深度与实战能力,需对缓存、渲染、框架原理等有清晰理解,并能结合项目经验阐述优化方案;同时需展现对新技术的学习热情与适应能力。