- 面试公司:上海云简业财
- 面试岗位:前端工程师
- 面试时间:2025/02/09/13:30
- 面试时长:(笔试 1道题) +(一面技术 40min)+(二面hr 40min)
- 面试体验:一般
线上笔试
一面:技术(40min)
- 自我介绍
- 项目相关提问
- 技术问题
项目提问
我看到你简历上介绍了一些可视化内容,能说一说具体是哪些项目用到了可视化呢
答:
- 高轨卫星态势项目中,需要实现一个能够实时追踪卫星轨迹的可视化地图
- 是用到ECharts进行渲染
- 在广联科技公司里主要负责可视化项目的组织和开发
- 其中比较有代表性的有:徐矿智慧校园驾驶舱系统、企业工时监控大屏
- 选择的技术栈大多为ECharts、Threejs,对一些要求比较特殊的图表,会用到D3进行实现
- 在最近的一个App项目中
- 尽管是Android和IOS原生开发的App,可视化和游戏部分依旧由我负责开发,通过webview的方式嵌入到app中
在以往的项目中,哪一个让你觉得收获最大呢
那就这个项目可以展开说说吗,说说具体的功能点
那在这个系统中,是如何进行权限管理的呢
那么能谈谈这个系统的登录是如何实现的吗?
技术问题
如何加快首屏加载的速度呢?
如何获取首屏加载时间呢?
- DOMContentLoad
- performance
- chrome控制台的performance性能监听
加载慢的原因
- 网络延时
- 资源文件体积过大
- 重复请求加载资源文件
- 加载脚本时,渲染内容堵塞
解决方法
- 减小入口文件体积/网络请求次数
- 路由懒加载
- 图片懒加载,只加载用户视口可见的数据
- script标签资源异步加载,使用async和defer加载
- 静态资源本地缓存
- 采用http缓存,设置cache-control、last-modified、etag等响应头
- UI框架按需加载
- 按需引入UI库
- 图片资源的压缩
- 进行适当压缩
- icon可使用字体图标
- 小图标可以使用雪碧图的方式合并到同一张图上
- 组件重复打包
- A.js文件被多个路由引用时,造成了重复下载
- webpack的config文件中,设置CommonsChunkPlugin的minChunks,
- 打包数量大于等于minChunks的包会被抽离到公共依赖文件中
- 开启GZip压缩
- 安装compression-webpack-plugin插件,进行包体积压缩
- 服务器端也要做相应配置
- css/js/html/image等文件都是可以压缩的
- 使用CDN进行加速
- 利用webpack的splitChunks进行代码分割,对js进行分片
- SSR,服务器端渲染
- 相当于后台将页面结构和数据准备好,浏览器端只需要进行渲染即可
- 体验方面
- 增加骨架框
- 增加loading动画效果
script的async标记的使用条件是什么
- 使用条件
- 适用于独立脚本、第三方脚本
- 脚本之间无依赖关系
- 脚本不操作dom或不依赖其他脚本
- 因为脚本可能在dom完全加载之前执行
- 如果是对于需要操作dom的脚本,可使用defer
- defer和async的区别
- async执行顺序不确定
- defer执行顺序确定
display:inline 和 display:inline-block的区别
答:不清楚
- block
- 元素独占一行
- 宽度自动填满父元素宽度
- 可以设置width、height
- 可以设置margin、padding属性
- inline
- 不会独占一行
- 设置width/height无效
- 水平方向的margin/padding有效,垂直方向无效
- inline-block
- 将对象呈现为inline对象
- 对象的内容作为block对象呈现
- 可以使一个元素既具备inline的同行特性,又有block的宽高特性
问:所以你用的都是flex、grid之类的布局方式吗
答:也有float方式的布局
absolute和translate的区别是什么
- translate
- 动画性能更优
- 保留文档流,不会影响元素布局,对需要保持元素之间相对位置的场景有用
- 根据自身定位
- 支持3d变换
- absolute
- 相对于祖先元素(非静态定位)进行定位
- 使用top/left等属性进行定位
- 需要通过z-index设置堆叠顺序
- 完全从文档流中移除
html中,如何使用label和checkbox,实现文字和多选框同时绑定呢
- label标签添加for属性
- 能绑定for属性值为checkbox的id
1 | <div> |
property和attribute的区别是什么
一个html标签在浏览器中解析为dom元素时,
生成的dom元素上定义的属性及property,
其中有一个attributes属性,包含了所有的特性
attribute
- 特性
- 值永远是字符串/null
- 大小写不敏感
- 不存在时返回null
- 操作特性的api
- hasAttribute/getAttribute/setAttribute/removeAttribute
property
- 属性
- 值可以是任意合法js类型
- 大小写敏感
- 不存在时返回undefined
当标准特性attribute更新时,属性property也会更新
input.value只能由attribute修改property
- attribute的value更像是defaultValue这个property
使用data-开头的attribute会映射到DOM的dataset中,划线格式会变成驼峰格式
checkbox勾选和未勾选的标记是什么
答:勾选上value为true
问:那value是property还是attribute呢
答: 可能是property吧
补充回答:回答错了
- checked属性:反映checkbox是否被选中
- checked属于property
- value是checkbox对应的值,用于表单数据的提交
- value属性attribute
css如何解决不同浏览器样式兼容的问题
- 使用normalize.css标准化样式库
- 使用浏览器私有属性
- 使用css兼容工具,比如Autoprefixer
- 使用postcss
- 可以进行css后处理,自动添加浏览器前缀
- postcss-px2rem能够实现 可以将代码里的px单位转换为rem单位,在vue.config.js中作为插件引入
有一个异步数组,如何让这个异步数组中的请求能够顺序执行
1 | const list = [] |
那么如果想使用4个线程池同时执行这个异步数组的话,如何实现?
1 | const list = [] |
问:如果我想用8个呢?
答:循环数换成8
问:浏览器可以同步执行8个请求吗?
答:最多6个
问:uniapp实现的App中有调用过原生SDK吗
可以说一下下面2种定义函数的区别吗
1 | foo() |
- 第一种写法会被解析器自动提升到代码的头部(函数声明提升)
- 第二种,虽然var定义可以进行变量提升,但赋值不会被提升,所以会报错
你平常常用的部署工具有哪些
使用nginx时部署常用的配置项有哪些
使用nginx部署单页面应用时,会做哪些特殊配置
- SPA应用
- 只有一个html文件index.html
- 需要将所有路由请求重定向到index.html
- try_files $uri $uri/ /index.html
- 即当请求文件不存在时,返回index.html
- MPA应用
- 路由由服务器端处理
- 每个页面对应一个html文件
- 请求资源不存在,返回404文件
- try_files $uri $uri/ -404
使用git比较多还是svn,是习惯用命令行还是第三方工具?常用git指令有哪些?
常用git指令

- git clone
- 初始仓库
- git checkout test
- 切换分支
- git checkout
- 放弃分支修改
- git status
- 查看当前git状态
- git add .
- 将修改加入缓存区
- git commit -m “备注修改”
- 提交内容到本地仓库
- git reset HEAD
- 撤销加入缓存区的文件
- git reset HEAD~
- 撤销提交到本地仓库的文件
- git pull
- 拉取远程仓库代码
- git log
- 查看提交日志
- git reset
- 回滚操作
如果我已经git push上去了,想要修改push的信息应该如何做
- 方法1:再次提交,修改提交信息
- 使用git commit –amend,修改提交信息
- 方法2:回退commit
- git reset –soft/hard
- soft:保留工作目录
- hard:工作区和暂存区的内容都被抹掉
- git reset HEAD || git reset –mixed HEAD
- 改变的差异在工作区
- git reset –soft/hard
二面:hr(40min)
可以简单的介绍一下过去的工作经历吗
在北京的工作经验中有吸取到什么经验吗?
那你为什么会想到上海来工作呢?
能具体说说是什么原因导致你有了“业务比技术更加重要”的感悟吗?
问:我没听懂,可以再详细的说说吗
那你未来的职业规划是什么呢?
可以谈一谈你上一个项目,以及在上一个项目中的角色吗
说一说你上一个项目中遇到的最难得问题,以及你是怎么解决它的
你上一份工作的工作节奏如何
答:非常快
问:有多快呢?比如说具体是什么样的呢?
答:晚上基本都7、8点下班,赶版本的时候9、10点常态
那你对这种节奏体验如何呢?
答:我个人是比较能适应这种快节奏的工作的