记第一次面试经历

236 阅读14分钟

最近投了差不多一个多星期的简历(很感谢B站 “一百个Chocolate” UP 主帮忙指导修改我的简历),某聘和某僧这两个平台都投,但主要也是在某聘上,而且某僧上的基本也没什么回应,和几个hr线上沟通过,有些hr要求一周要实习5天的,因为学校课程的原因达不到要求只能放弃,但好在是投出去的简历没有石沉大海,上周就接到了两个电话的面试邀约。因为这两个面试时间离的很近,所以我就把它们放到一起记录。

广州酷得

这是第一家给我打电话约面试的公司,当时接到电话后有点兴奋,也没有多在意自己有没有投过这个公司,只想着先约个面试刷刷经验也行,于是就答应了邀约,但是hr的面试邀约是直接发手机短信给我的,也没有标注公司叫什么名字,只是给了公司的地址。

到了那边前台先让我填信息登记表,然后在旁边稍等一会,因为短信里面没有要求,而且出发的时候比较急,我就没有自带纸质简历,但我发现这家公司的人好像也没有我的电子版简历,我就开始有点疑惑了。那天下午在那边面试的人也挺多的,差不多有十来人,因为是第一次面试,所以我不知道这种现象正不正常,只觉得竞争有点激烈。

在前台等了差不多五分钟,面试官就过来叫我了,把我带到一个小房间里,拿着我刚刚填的信息登记表就象征性地问了几个问题,然后就开始介绍他们的公司,其实她介绍的时候我也没仔细听,因为我主要是想过来体验一下攒攒面试经验的。因为前面的沟通我是说自己可以独立开发项目,后面面试官就说等会有个上机测试(之前电话里头也没说呀),然后面试官就让我加完她的微信后在前台等待。

后面我就去机房里面做上机测试了,那个机房里面我大概数了一下,算上我自己有10位做测试的面试者,机房负责人让我自己开了一台电脑,然后问了我的技术栈,听完之后,他就拿U盘往我的电脑里面传了份资料,让我做移动端的页面布局(“页面不用1:1还原,需要的图片资源可以在网上找,不会的也可以上网查一下”),也没告诉我限定时间,而且电脑很卡,环境都没配置好,调试的时候只能自己不断手动刷新页面。在 iconfont 官网上只下载了一个图标,后面因为网络的问题都下载不了了,也没办法百度查东西了,我就只能用这这个图标直接做布局。

感觉差不多做了一个多小时,基本上都做出来,移动端的适配性也考虑到了,然后我举手示意负责人,他过来看了一下我的页面效果,说基本上都是可以的,但有一个需求理解错了,点击头像弹出信息卡片是要把原页面挤到旁边去而不是覆盖在原页面之上,后来因为时间不够我也没去修改了,所有代码都是用原生实现,那个负责人甚至都没看我写的代码就说可以了,让我回前台等消息。

在前台等了一会儿,台前的人就和我说可以回去了,在回去的路上我整个人都是充满疑惑的,那么多人坐在机房里面做测试有点像海选,而且面试官象征性地问了几个问题感觉只是走个过场,好像巴不得我直接去做上机测试。后面我在投递简历的两个平台查了一下才发现我没有投递过这个公司,后来在知乎和贴吧上查了一下,好多人都说这是家培训机构,也有和我经历十分类似的,反正就是体验不好,就当做是一场不一样的体验吧哈哈哈哈。

广州卓动

这是一家游戏公司,和上一家比起来正规了不少,面试官是先打电话给我做一个简单的咨询,然后告诉我是否能过去面试,我答应后面试官就提前告知我过去那边会先做一个30分钟的笔试题,然后再进入面试环节,面试的邀约也是通过邮箱发过来的,让我先在网上填写一下信息登记表,然后过去直接带着纸质简历和学校的成绩单过去就行了。

到了公司门口我直接和前台小姐姐说我是来面试的,她先让我拿出简历,然后让我到旁边的房间里面先做一下面试题,还帮我拿了瓶水开了空调(和第一家公司比起来果然没有对比就没有伤害哈哈哈哈)。

笔试环节

我就自己一个人在房间里做笔试,也没有其他人和监控,笔试题都是一些常规的八股文,但是因为我之前主要是通过做项目来学习的,对面试题的总结比较少(八股烂的一批),所以我觉得这份面试题对我来说是比较难的。选择题不少都是连猜带蒙的,像什么 apply 和 call 我之前也没有刷过,还有数组去重(这个其实之前是做过的,但是当时写的时候已经忘记了),还有一个 set 和 map 的代码题,整份面试题中没有算法题,最后一题是手写一个函数:根据传入的数据类型进行判断,然后对其进行复制(只能记得这些,我看到这道题后一开始想到的是深浅拷贝之类的知识点,但我也写不出来),我的知识点总结实在是太烂了,简答题就作出了一个css的垂直居中布局方案。

笔试题做完后前台过来把题目带走了,让我稍等一下,面试官等会就到,我想应该是现场改面试题,后面的面试会根据面试题里面的来问吧,果然如此,等了差不多五分钟,面试官就拿着我的简历和笔试题进来了,直接进入面试环节。

面试环节

首先就是简单的面试介绍,这点直接跳过。后续的问题只能根据当时面试结束后的回忆,大体上拼凑出来。

  1. :为什么选择前端?你是如何学习前端的?

    :因为大一那会学过视频剪辑,对界面还是比较感兴趣的,而且在部门师兄的介绍下了解前端,自己的专业后续也会开展相应的课程,就开始选择了前端。学习前端主要是通过网络视频(bilibili)、校内课程、ChatGPT、逛社区(掘金)还有知识星球(一对一答疑)。

  2. :能简单说一下浏览器事件循环机制吗?

    :(这道题我理解错了,直接答成了 DOM 事件流,面试官也给出了相应的提示,但是确实没了解过,只能摇头)

  3. :你这边项目经历的介绍也写得挺多的,能说说你在做项目的时候印象最深刻的点吗?

    :(印象最深刻,那就是项目难点了)印象最深刻的点应该是做图片上传的功能吧,拿我比赛做的饮食推荐系统的后台来说,我需要实现这样一个场景:点击编辑或则新增食品信息弹出编辑窗口,可以填写食品的相关信息和上传图片,我需要做的是点击确认按钮图片和信息同时上传到服务器上,这个项目组件库用的是 Element UI,但是官网给出的示例是点击图片上传后就直接请求接口将服务器上传到服务器上了,我需要先做一个图片预览然后点击确认再进行上传。解决办法就是在本地 new 一个图片的 URL 然后渲染到窗口当中,点击提交按钮后再请求接口上传信息(图片上传和其他信息上传是两个不同的接口)。而且修改食品信息的时候如果不需要修改图片的话,我希望就是不请求上传图片,尽可能减少接口的请求,所有需要加一个 if 条件判断获取到的图片地址是否发生了改变,如果不变就不需要请求上传图片了,最后就是异步的问题,直接用 async / await 来解决。

  4. :你刚刚提到的 async / await,那你能说说它们是用来干嘛的吗?

    :async / await 其实是基于 Promise 实现的,主要用来处理异步操作,可以简化代码(回答的很笼统,再详细点的我也不清楚了)。

  5. :你这边项目中也有用到 vuex,那你能说说 vuex 中 state、mutation、action 的区别吗?

    :state 的话主要是用来存储数据状态的,action 和 mutation 的代码执行修改的就是 state 中的数据状态,然后 mutation 是用来更改 state 的数据状态的, action 主要是用来处理异步操作。(vuex其实我用的也不是很熟练,但是早上看了一会项目代码,能大致答出个所以然)

    :你说到的异步操作那你觉得 mutation 中可以处理异步操作吗?

    :我觉得不行,只能用 mutation 来处理(面试官后面告诉我其实是可以的,只是不建议这么做,可以去了解一下原理)

  6. :能说说你遇见过的 ES6 有哪些新特性吗?

    :我在项目中用到的 ES6 新特性有:let、const 关键字,模板字符串、展开运算符、箭头函数之类的(当时脑子开始有点乱了已经)

  7. :你说的 let、const 关键字,和之前的 var 三者有什么样的区别?

    : (这题有了解过,大致答了三者的区别,但后续没有提到变量提升这一方面)

  8. :能说说箭头函数和普通函数的区别吗?

    :箭头函数和普通函数比起来简化了写法,代码看上去更加简洁,而且两者的 this 关键字指向是不同的(后续关于 this 的指向,之前有看到过,但是也没记住,只能硬着头皮一派胡言)

  9. :看了你的简历,你的技术栈主要是 Vue,那平时用的 Vue2 多还是 Vue3 多?你觉得这两者有什么区别?

    :刚开始学习框架的时候用 Vue2 比较多,后面学完 Vue3 之后 Vue3 用的比较多,但总体上还是 Vue2 居多。通过直接使用感受来说,我觉的 Vue2 和 Vue3 语法上有一定的区别,Vue2 是选项式 API 而 Vue3 是组合式 API,组合式 API 写起来代码更加灵活,更加适合大型项目;其次就是打包工具,Vue2 默认用的是 Vue-cli,而 Vue3 默认用的是 Vite,感觉 Vite 对开发者环境比较友好,更加轻量,启动速度比 Vue-cli 快,但是 Vue-cli 比较兼顾整体的稳定性。

  10. : (看了一下我写的笔试题)flex 布局有哪些属性,能简单说一下吗?用 flex 布局有什么好处?

    : 首先是 display: flex 可以将目标元素设置成弹性布局,然后 flex-direction 可以改变布局的排列方向,默认是 wrap 行排列,还有 column 列排列以及二者的反方向排列等;justify-content 设置元素内部的排列布局,align-items 可以设置元素在主轴方向上对齐(这里就答错了,应该是控制侧轴,后面还问了我主轴具体是哪个元素后面也答不出来)。用 flex 布局与传统的浮动布局等相比起来可以用更少的代码更快的实现页面布局效果。

  11. :position 有哪些属性值?

    :position 一般开发常用的较多的是 relative、absolute、fixed等。

    :fixed 和 absolute 有什么区别?

    :fixed 是固定在页面的某个位置不动,是基于页面窗口进行偏移的,而 absolute 是基于父元素进行偏移的(后来又问我确定是基于父元素偏移吗?我愣了一会后回答父元素需要确定加上 position: absolute)

  12. :跨域应该接触过吧,可以简单讲解一下什么是跨域吗?有哪些解决方案?

    :跨域在团队项目开发中经常接触到,出现跨域的原因是浏览器的同源策略引起的(后面让我说的具体一点我就说了因为 IP 地址,端口号不同都有可能引起,反正就是不清楚又开始胡说八道)。跨域的解决方案首先是 jsonp,可以解决 get 请求方式的跨域(问我具体怎么实现答不出来)、自己在开发中经常用的就是 proxy 代理、还有就是在后端服务器那边进行其他的配置(CORS的解决方案当时没想起来)

  13. 反问:能了解一下现在公司前端业务这方面主要使用的技术栈吗?

    :现在公司前端主体业务用的技术栈是 React 和 Ts,一些内部的老项目的维护也有在用 Vue 进行日常维护。

  14. 反问:那实习生入职后日常工作的主要内容是什么?

    :主要是帮忙维护公司的旧项目这些。

  15. 反问:面试结果大概多久能够知道呢?(虽然知道自己已经凉凉了)

    :大概 2-3 个工作日会出结果。

因为感觉自己面的不好,后续也没有什么想提问的,面试就到此结束了,全称大概1个多小时,面试结果和面试时长都比较符合我的预期。

面试总结:

首先酷得的面试就不多讲了,主要是在上机测试的体验,有点像在学校机房做实验,面试方面几乎学不到什么东西,只是了解了一般求职面试的大概流程而已。

卓动这边的面试感觉还是能学到很多的,首先是笔试题可以让我清楚知道当前外面公司面试题的难度以及自己对知识点的掌握情况;其次就是和面试官一对一交谈,一问一答的方式更考验自己对知识的熟练度和当时自身的状态。我感觉当时面试的状态还是可以的,说话不会发抖,会就是会,不会就是不会,会的就多说一点(和之前在学校的社团面试比起来好太多了,之前因为社恐在学校社团那边的面试说话都颤颤巍巍的),心态上和之前比起来有明显的提升。其次就是我对知识点的掌握是不牢固的,零散的,后面的时间我需要规划一下,有条理地梳理一下知识点,好好复盘一下这两次面试。

后续我的安排就是继续学习一下其他技术栈(把现在手上这个 uni-app 项目先做完,再找个和 Ts 相关的项目做一做熟悉一下 Ts 的开发流程,React 也要开始学一学了),然后就是不断完善一下简历,还有总结面试题目,继续边投简历边学习。