顺电面经

面试官问题:
- 有没有用过git stash
git stash 把工作区和暂存区的改动保存在一个栈上,后续可以在任何分支重新将某次修改推出来,可以添加后缀命令:
- list: 展示当前保存进度
- pop:把最近一次保存到内容弹出并恢复到工作区,有冲突需要手动处理才能pop成功。
- apply: 类似pop操作,但是不会删除弹出的修改
- show: 查看最新保存的stash和当前目录的差异
- drop + stash名称: 移除某个指定的stash
- clear: 删除所有存储的进度
- 说一下electron通信方式
通过IPC进程通信机制,主进程的ipcMain和渲染进程ipcRender之间进行通信,渲染进程之间通过主进程进行通信。
- git如何合:
在某一分支上输入命令
git merge which-branch
- 场景题,如果一处代码已经提交到a分支,我在c分支也用了,要怎么处理
如果能确定具体的commit,复用a分支上的某个功能,可以通过在c分支通过
git cherry-pick <commit-id>;如果需要很多改动,需要同步整体代码,那么在c分支
git merge acherry-pick也会发生冲突,看情况手动merge即可
- pinia和vuex的区别
两者都是状态管理库。
vuex必须state/mutations/actions
pinia直接用函数写,更像组合式api,天然支持ts
- var、let、const之间有什么区别
var可以变量提升,先用后声明。在函数中使用var声明变量是局部的,如果不在函数中使用var就是全局的。
let和const由于存在暂时性死区,提升之后不会初始化,也不能被引用。在声明前处于暂时性死区。
let 和const声明的变量只能在当前函数块使用,不允许重复声明。
const 只能读不能写
- electron打包的命令是什么
会先构建前端,在执行electron-builder工具打包
- electron页面为什么会出现白屏的现象
因为main进程浏览窗口创建的时候默认显示窗体,而我们的网页内容还没有加载好,所以会出现白屏现象,在创建窗口的时候设置show为false,并且在显示窗体之前加载网页内容,就不会出现窗体和加载内容不同步导致的白屏问题了。
- 前端布局方式有哪些
传统布局方式:
- 块级布局:
- 默认垂直排列
- 块级布局:容器高度由内容撑开
- 浮动布局:
- 元素脱离普通文档流,占据左右空间
- 需要清除浮动避免容器高度塌陷
- 父元素设置:
overflow:hidden- 定位布局:
- 脱离文档流或相对位置偏移
- 可以实现重
- 叠、固定位置或粘性滚动效果
- 通常用于弹窗、工具提示、固定导航栏
- 弹性布局(flex):
- 可以控制排列方向和对齐方式
- 子元素可以自适应、分配剩余空间
- 可以轻松实现居中、间距分布、响应式伸缩
- CSS Grid
- 二维布局
- 可以显示定义行列大小、间距和区域命名
- 支持复杂的响应式布局
- 适用于表格型布局、网格画廊
- 多列布局:将内容自动划分成多列
- 表格布局:
display: table
自己补充:
- electron的技术架构
chromium可以支持ECMAScript最新特性
nodejs可以实现文件读写
NativeAPIs提供统一的原生界面能力,获取底层设备的硬件信息
- electron桌面应用运行机制
点击app启动,主进程创建window,由win加载主界面,如果涉及到人机交互,例如开始烧录,渲染进程接收到的组件信息,通过ipc通信机制传递给主进程,主进程收到信息之后,然后调用nativeAPI,与设备进行串口通信。
- electron的生命周期
ready: app初始化完成
dom-ready : 一个窗口中的文本加载完成,之后可以对dom进行操作
did-finish-load: 导航完成时触发
window-all-closedL: 所有窗口都被关闭时触发
before-quit: 在窗口关闭并且应用退出时触发
quit: 当所有窗口被关闭时触发
closed: 当窗口关闭时触发,此时应删除窗口应用,回收窗口实例
- Nodemon是什么,有什么用
Nodemon是一个npm下载的全局依赖,可以在终端执行js文件。每次更改文件代码会热更新
