腾讯基础微信团队一面
1.项目相关,OCR如何实现是怎么在团队之间沟通的?现在采用了后端返回的解决方案,前端有没有OCR的解决方案;
纯前端有第三方库,比如Tesseract.js;
在上传给后端的时候,也可以进行一部分预处理,比如压缩,表单及时反馈,图像处理等等
2.实习当中修复的BUG都是什么类型的?
3.实现过复杂动画吗?
4.爬虫怎么实现的?
5.tailwind的优势在哪?
优势 | 解决了什么痛点 |
---|---|
开发速度快 | 告别 CSS 文件切换和类名思考,专注实现 UI。 |
高度可定制 | 摆脱传统 UI 框架的样式束缚,轻松构建自定义设计。 |
设计系统一致性 | 通过 tailwind.config.js 统一设计规范,避免“魔法数字”。 |
性能卓越 | JIT 引擎按需生成 CSS,最终产物体积极小。 |
直观的响应式 | 在 HTML 中即可清晰地控制不同屏幕尺寸下的样式。 |
利于组件化 | 样式与组件逻辑内聚,修改组件时影响范围可控,可维护性强。 |
6.说一下盒模型
[[前端面试常见题-CSS篇]]
7.页面中放图标(Icon)有哪几种方式;svg的时候如何更换背景色,用color属性的前提是什么?
方式 | 样式控制 | 性能 | 可访问性 |
---|---|---|---|
图片格式 | 差 | 多请求/一般 | 一般 |
字体图标 | 好 (仅颜色/大小) | 差 (文件大) | 差 |
内联 SVG | 极佳 | 好 (无请求) | 极佳 |
SVG 雪碧图 | 极佳 | 极佳 (单请求/缓存) | 极佳 |
SVG的背景色,直接更改 background-color
,
SVG图形的颜色,由 fill
(填充色) 和 stroke
(描边色)决定; color
属性默认对这两个属性无效,若想有效,则需要将 fill
和 stroke
的属性值设置为 currentColor
8.如何确保定时器精准
- 提高检测频率,setTimeout 1000ms -> setTimeout 200ms,
- WebWorker,避免主线程阻塞
- 处理偏移,包装一个setTimeout,使用performance.now来获取时间戳
- 对于动画和游戏之类的循环,使用rAF,与浏览器渲染同步
9.说一下async和await的底层是如何实现的
async 和 await 本身是 Promise 和 Generator的语法糖;利用Generator函数可以暂停和恢复执行的特性,来等待Promise的一步操作完成;
在V8引擎中,现代版本中会通过更底层(C++)引用Promise的钩子和状态机管理来实现await,直接将其编译成更底层的字节码,绕开Generator的抽象层,从而获得更好的性能。
10.服务端如何检测服务是否失效?
检查方法 | 优点 | 缺点 | 常用执行者 |
---|---|---|---|
HTTP 端点 | 灵活,检查深度可控,标准化 | 需要应用代码支持,有一定开销 | 负载均衡器, K8s, 监控系统 |
TCP 端口 | 简单快速,通用性强 | 检查深度浅,无法反映应用逻辑 | 负载均衡器, K8s, 监控系统 |
执行命令 | 可检查应用内部状态 | 耦合度高,依赖执行环境 | K8s |
应用心跳 | 主动上报,可检测网络分区 | 需要应用集成SDK,依赖中心节点 | 服务发现系统 (Consul) |
指标监控 | 全面,可预测故障,反映性能 | 配置复杂,需要完整监控体系 | 监控告警系统 (Prometheus) |
11.有多个commit记录,如何更改为一个commit记录
- git reset 后 commit, 再push
- git rebase -i,交互式变基