刚结束自己的第一个面试,来记录一下这次面试的体验以及需要加强的部分
面试前边会根据你的项目提一些问题,比如我用的vue,那开始肯定要提问你vue的问题,所以vue必须要好好掌握一下,而且肯定会结合项目来的(权限管理之类的 )
后边就直接提问js+css的一些内容(面试官肯定直接根据列的题目提纲问了,这边没啥问题,当然也要防止他再回去结合项目问,)
最后还问了对自己的工作有什么期望(提升前端技术,接触后台技术 笑cry)
技术方面(只记录自己没答出来的)
- 深拷贝
你项目中用到过吗,你商品管理应该会有编辑功能吧,那里面用到深拷贝了吗,项目中怎么实现组件的传值的
我貌似没有用到,回去复盘一下element-ui或者后台有没有实现- 用到权限管理了是吧,怎么实现的
axios 拦截器,token,这个还要再看一下,总结一下怎么描述,感觉自己描述的不清晰- computed和watch 知道吗
computed知道,watch不知道- computed 的数据怎么变化呢
- vue-x了解过吗
- 组件之间是怎么传值的呢
这个回答出两个,但是还需要好好了解一下
需要继续补充的有
- 关于vue需要继续了解
- 关于项目结合八股文的需要继续了解
- 八股文的使用背景,比如说像 闭包(轮播和幻灯片),你项目里面用到过吗 深拷贝呢 怎么实现的呢 等等
- 如何进行优化,要好好了解一下——看很多招聘请求,都是要优化前端页面的
自我介绍 介绍自己的项目
关于github问了一些问题
- 给我一些github的常用命令整理如下
鉴权
鉴权机制基本就是必问的答案整理
这次问了一个token失效问题 我没答上来
js的一些内容[1,2,3,4]->[1,2,3,4]
组件传值
强缓存的参数
刚刚结束微软的一面,体验good级别,面试官超级nice 太温柔了我哭 大厂就是大厂考察的东西跟之前面的完全不一样,然后更加坚定了以后工作想去微软的想法hhhh
- 首先面试非常看重算法,一上来就丢给我一个算法题 两数之和O(n^2),然后我引导了一下面试官,进行了有序数组的双指针排序(时间O(n),空间(O(1))),后来又说,无序数组的话,加一些空间能不能有一些时间复杂度上的改进,这个我没有答出来我哭 ( 用哈希表 )
- 在问算法的时候,并不是直接让你写完算法就可以了,而是在算法上拓展出一些其他的问题,比如说空间复杂度、时间复杂度,还让我写了几个测试用例,[1,2,3,4,5] number是3,7等 在边界条件上也提醒了我一下 比如说,我刚开始就int len=data.length; 面试官提醒了我 如果data根本就是null,那么这个length就直接怕抛出异常 (所以加一句 if(data==null)){return false}
总之复杂度、边界条件、测试用例、优化 都在算法的考察范围之内- 问了一个ifram的数据传输问题,我回答 我自己貌似没用过,但是我有过一些了解,这个算是没有回答出来吧
iframe跨域数据传递 postMessage- 其次问了一些javascrift的问题consolelog(null == undefined ?null ===undefined?)
- data=true
sesstionStorage.setItem(“data”,true)
if( sesstionStorage.getitem(“data”==true)){
console(“正确”)}
else{
console(“错误”)}
应该return的是错误,原因sessionstorage、localstorage、cookie里面只能存储字符串- 反问环节 我问了对我的面试表现有什么评价和建议 之后我改进一下,说我答得不错hh,沟通能力很nice,而且很真诚,希望下次面试可以保持(笑cry hhhh)
项目
1、问物联网专业有啥印象深刻的课程
2、项目小组的成员和分工
3、研究生学过的神经网络(激活函数都有什么)
4、学过什么语言,是在课上学习还是自学(中间说你学的很杂呀 哎)算法
面试官并不像一面一样直接给出一个题目,而是绕了一下才说明题意,过程为
1、现在有一个大数,int无法表示 ,计算机可以表示的最大的数是多少(可以表示的数的范围) 32位——期间我答错了两次,最后回答上来了
2、想表示的话可以用什么数据结构 我回答用的栈、队列啥的 最后其实是想让你回答链表
3、 我现在有两个大数,用两个链表表示,想给他加起来,题目出现
力扣 445. 两数相加 II (不用栈 而是直接操作链表)感想:我做的其实也不怎么好 但是面试过程中一直跟面试官保持沟通 说出自己的思路,思路不对面试官会给你一些引导 所以还是不要沉默 积极的交流和沟通
- 算法 : 把一个数字转化成汉字
前端相关问题
1、你知道用户权限机制么
2、如何防止token泄露(
3、token的有时候会过期,这时候该怎么处理,他在用户那边的表现是什么,refrech机制
refrech token
4、如何防止token的泄露
5、场景:如果你需要给别人debug 但是你不知道他的用户名和密码,如何做,(暂时获取一下token,用postman来看看 可以暂时解决无法登陆输入输出的问题)
好吧 全程都在这个我不太清楚
项目
你对这个项目感兴趣么
你遇到最大的问题是啥
有找到什么优化的解决办法么ts
interface和type的区别是什么webpack
plugin和lodar的区别vue
你比较熟悉vue的哪个版本
vue2.0和vue3.0的区别
dahttp
http不同版本的区别
httpreact
用过钩子函数吧uselayouteffect 和 useeffect 有什么区别
11axios
axios在vue中的使用-axios的错误统一处理
黑马常见面试题讲解
首先他问了 你比较熟悉哪个技术
- js
构造对象的几种方式- vue(你比较熟悉那个框架)
你用的vue是哪个版本 2.0
vue的data为什么是一个函数(深深的理解才行)
vue生命周期
父子组件传值
兄弟组件传值- token
refresh token和access token是什么机制——双token
jwt
token 是可以随便获取的么,比如我直接拿一个token登录可以么
- 项目白屏
解决方案
首屏资源优化(首屏需要加载很大的js文件 且网速很差)
①路由懒加载、组件懒加载(import、vue异步组件技术)
②cdn资源优化:将 vue、vue-router、vuex、axios 这些 vue 全家桶的资源,全部改为通过 CDN 链接获取,在 index.html 里插入 相应链接。
③使用 gZip 加速优化- 重绘和重排,如何避免
如何避免
减少对dom元素的操作/使用绝对定位脱离文档流/使用className一次性改变属性- 通过修改原型对象的属性 判断代码输出
原型对象的代码输出
原型对象题目 快手
讲解
22
promise代码输出- 有遇到什么问题么,是怎么解决的
- 前端修改逻辑 后端去
- vue生命周期以及每个阶段特点
- 虚拟dom(双向比较) 除了key还有什么可以标志是一个dom节点(tag: ‘div’) 如果是同一层的该怎么比较(双指针比较??)
dd
- 如何放置script和渲染dom元素的阻塞
script往后放、async 脚本加载完之后立刻执行、defer脚本加载完之后 等到html解析完成该再一次执行- css垂直居中(加一个table-cell vertical-align text-align)
- position absolute设置宽高 是相对于谁设置的
宽高会根据父元素的宽高来设置,如果没有设置父元素的position:则按浏览器作为父元素的宽高算- cdn的原理
- https
- 事件循环(其实是宏任务队列和微任务队列的循环)
- 异步!!!(一个题目 继续做呀)
- 算法(两数之和)
- 赋值语句时浅拷贝
- 跨域
(本地服务器跟webpack的代理转发不一致)- token(存在那里,各种机制)
如何知道有没有超过过期的时间(前端可以做但不推荐 后端也可以做,后端会在第一次请求的时候起一个计时器)- 三目运算符
- 数组去重
- vue2.0 不能检测数组的变化
- 直接array push一个数据 前端的list列表会发生变化么(no)
- 项目过程中有遇到过白屏的现象么
- 如何去跟后端沟通的
- 如何获得一个dom节点(原生js方法,vue方法 $refs)
- promise async await
快手面试地址
for (var i = 0; i < 3; i ++) { // const let
setTimeout(() => {
console.log(i)
})
}
//解决
for (var i = 0; i < 3; i ++) { // const let
(function(i){
setTimeout(() => {
console.log(i)
}
}
))()
}
let a = [1,2,3]
function func(a) {
// a = [4,5,6];
let newa=[4,5,6]
// return ((a,newa)=>{
for( let k in newa){
a[k]=newa[k]
}
// return a;
// })
}
func(a);
console.log(a); // [4, 5, 6]
setTimout(() => {
console.log(1)
}, 0);
console.log(2);
const p0 = new Promise((resolve,reject) => {
console.log(3)
resolve(4)
}).then(() => console.log(4));
// p0.then()
console.log(5);
const p1 = p0.then(() => Promise.reject(6));
p1.catch(res => console.log(res));
- tcp的可靠连接的一个机制
TCP协议主要通过 超时重传(数据或者ack报文传输失败 确认应答 序列号)、拥塞控制(流量控制、滑动窗口、发送窗口接收窗口 面向字节)- token的生成的方式: JWT(JSON Web Token)
- 排序复杂度
- tcp的拥塞控制和流量控制不一样
- 链表归并排序 快速排序
- 并查集、红黑树、移码、补码、反码
- 循环引用:使用set
- 垃圾回收机制(看最新的)
- vuex 四个部分 state mutation action vue component
- 在javascript中如果定义了2个或2个以上的相同名字的函数,则只有最后定义的函数才有效
3 4 5 61
参数1:从何处开始选取(截取数组单元起始位置的索引下标)
参数2:从何处结束选取(截取数组单元结束位置的索引下标)
but 返回的是一个新的数组 而不会改变原数组
concat /slice/tostring不改变原数组
splice改变原数组- 输出 undefined 10 (覆盖)
变量函数的提升
- async和await的底层实现原理
- promise可以被完全替代么
- promise.any比较
- 非技术问题
- 你是怎么学习前端技术的
①一开始学习前端,主要靠视频以及网站上例如菜鸟之类的网上的文档,主要是总结很多知识点,学一些基础的概念
② 后来开始跟着网上的教程学习一些框架 跟着视频开始做一些项目
③ 后来就开始自己仿照一些代码 自己写一些前端的项目和代码,过程中也边查边学 自己也有写csdn博客记录学习过程中的问题的习惯
④ 后来通过自己做项目以及实习过程中,意识到前端的其实范围很广 要学习的东西远远不止语言和框架,例如web安全 页面优化 跨端 前端工程化 前后端对接过程中 还需要了解浏览器 计算机网络 以及一些后端的技术 慢慢的会补充自己知识上的漏洞,在公司中也会碰到很多问题值得学习,一般都是自己查找原因或者和同事交流进行解决,然后自己总结出文档,方便日后查看和积攒经验。所以我感觉我的学习都是实操加总结- 你遇到过什么比较大的挑战,是怎么解决的
字段的确实导致 页面一直在loading
业务逻辑比较复杂,子产品的接口数据与主产品的接口字段差别比较大
需要check一下页面的loading问题到底出在哪个字段的问题上
解决方案:定位到该字段的逻辑,前端去除对这个逻辑的监测- 说一下做过觉得比较成功的事情?
我觉得我学习能力很强 通过自己的努力做到了很多事情
①考研成绩不错 总分第二
②决定做前端之后 在科研压力比较大的时候仍然比较认真的学习前端技术 最后也找到了微软的实习
③然后无论学习还是生活上 我都是自己想做的事情就一定会努力去实现,比如小时候一直很想学一些才艺,然后大学期间就 学习了很多爱好吧 比如声乐 钢琴 吉他 跳舞之类的- 你未来的职业规划职业规划
①职业方向定位:首先我未来主要还是希望主要集中在前端方向上,不断扎实一些前端的基础知识、项目上的话在前端的框架上多一些内容的学习, 除此之外,还希望学习一些后端之类的工作
②前端基础提升方面:
基本知识的掌握(基本的js以及框架)
扎实浏览器 计算机网络 等知识以及开发工具的使用
深入了解前端技术 例如web安全 性能优化 跨端 前端工程化的问题
良好的开发习惯- 你的优势和劣势
优势:
① 我是属于很努力的性格 很希望不断的提升自己 我的学习能力也很强 很希望能不断学习新知识
②我对自己要求也很严格 想去学前端 兼顾科研和实习
③团队意识 团体责任感 很强 很希望自己能对团队做出贡献
④ 我对自己也很了解 知道自己不足在哪里,由于我确实做前端的时间不长,基础知识也不是很扎实,但是我相信 如果如果可以有一个机会 通过一段时间的努力 我已经可以很快地持续深入学习前端这边的技术,一定能有很大的提高- 有什么要问的:
公司杭州前端团队的规模
公司对应届生的要求和培养是怎么样的?- 你是怎样看待前端开发的 ?
前端工作师主要面向用户、浏览器、数据接口。
最开始的认知就是css html这些界面内容 设计类的ui内容
后来认识到 前端更多的是跟后台数据打交道
觉得前端不只是一个UI上的操作 还涉及网络传输 浏览器兼容 以及各种优化 等问题 是一个很大的技术领域- 前端知识体系知识体系
① 界面部分:html、css、js、ts、vue、react
②浏览器 计算机网络 web安全
③ 渲染优化、性能问题
④ 前端跨端 小程序 移动端11
⑤ 前端工程化11- 商米科技是干什么的
商米是一家为商用领域提供基于安卓操作系统的全系列智能硬件解决方案的物联网科技公司。
物联网软件
智能金融设备 物联网应用软件
物联网、扫脸支付、新零售- 为什么要学习前端技术11
①以前学java c的时候经常不能短时间就做出东西出来,这样就感觉没有动力学下去了啊,整天看着一堆枯燥的书。
②前端一开始写html页面,看着自己写出来的一个个页面就很有成就感,然后慢慢的就想写的更漂亮,交互效果越多,就开始努力学习css和js,随着页面越来越复杂,就需要学更多的东西,追求更高的代码质量
③ 后来发现其实前端要学的不只是简单的界面内容 像前后端交互 web安全 计算机网络 浏览器的知识 渲染优化等等还有很多内容需要学习
就是这样的良性循环促使自己在前端道路上一直走下去。- 你们部门开发的流程是怎样的 ?
11
一个已经成型的产品
先在自己的分支上开发 连调
提交pr到主分支
然后上线- 前端方面的书
js css vue方面的书会看一些 但是主要的学习方式 还是依靠一些网站上的资料 之后会在看一些这个书
商米科技三面
get请求不修改数据
第三方无法获取网站的cookie
token