22届春季校招实习试水之路2(前端)

写在前面

本人22届本科前端菜鸡一枚,初次接触前端是在一年前,为了课程的项目零零散散地学了一点点。也做过课程上的两个前端项目(但都很水,就没有研究过底层原理的那种)。

时间线记录

5.20投递(校园22届实习双选会):

  • 搜狐前端开发实习生
  • 贝壳找房前端开发实习生
  • 北京思特奇前端开发实习生
  • 中国电子系统前端开发实习

以上是有后续消息的,总共投了10家左右吧,其他暂无笔试/面试通知(也有可能错过了一两个电话)。

5.28 中国电子系统笔试[6.2已过-以为有了搜狐offer拒了面试]

5.29 搜狐一面[ 5.31口头offer - 6.3口头offer被鸽]

6.1 贝壳找房一面+二面[6.1已过]

6.2 思特奇线下笔试+面试[6.2已挂]

6.3 贝壳找房hr面[已挂]

5.29 搜狐前端实习一面(焦点)- 视频面45min - 口头offer被鸽

这是我投递前端岗位的第一次面试,给搜狐的面试官小哥狠狠点个赞,人太太太nice了!感觉在很小心地试探我掌握的前端技术的深度哈哈哈,试到此路不通就另起一行。

好了,接下来进入正题,记录一下面试过程。是在腾讯会议进行的视频面,45min。

自我介绍+项目相关

项目只是简单地聊了聊一两句,可能也知道我们这种课设或者竞赛项目对技术不是很深入,没有问关于难点和亮点的问题。

计算机网络+数据结构

  1. 计算机网络的五层架构?每一层大概都做了些什么事情?
  2. HTTP和HTTPS两个协议的差别?SSL协议大概是一个什么东西呢?
  3. 数据结构学了吧?讲一下快速排序

前端知识

  1. JS这块,对闭包有了解吗?
  2. 那原型和继承呢?
  3. 你有专门看过JS相关的书籍吗
  4. 那你是怎么去学习JS这门语言的呢
  5. JS有多少种基本数据类型?
  6. undefined和null有什么区别?
  7. CSS有了解吗?BFC知道吗?
  8. vue这块,有研究过它底层的一些东西吗?就是只使用了它提供的脚手架写的项目是吧?

算法题

不是力扣上的题,就只是特别基础的题目,感觉就是编程入门的时候的课堂练习那种。但我很紧张,算法也说不上多好,最后还是需要面试官一步步引导才想出来。

  1. f(n) => 1+2+3+…+n,即输入n,输出1加到n的和,条件是不能使用循环和不能使用数学的求和公式(不能用乘除)。
    (递归)

  2. const arr=[x, y]; f(arr) =>[y, x] //x,y是数字或字符串。即将x和y的值互换,条件是不能开辟新的内存空间,即不能声明变量。
    (加减)

闲聊

  1. 对自己未来职业上有什么规划呢?
  2. 在前端这一部分的话,近期你有在自己去学一些什么东西吗?
  3. 你是打算一直做前端还是之后会考虑转到其他技术岗位上?
  4. (不知道为什么突然又开始问我的web3D项目,感觉他对这个很感兴趣,但我没答出来。。使用Babylon搭建3D场景,需要什么东西?就是说,在计算机里绘制出一个3D场景,需要通过Babylon去构建,那一个3D场景里面有一些什么元素呢?)
  5. 如果让你来的话大概什么时间可以入职呢?

反问

  1. 部门和业务?搜狐焦点,房产的买卖互联网相关的服务。小程序,vue,react的开发工作。
  2. 新人的培养和实习生主要的工作?导师制,业务融入有一套流程,每两周沟通会。
  3. 点评面试表现?在学校学习的知识基础还不错(?),很早之前学的东西,有印象、能记住,比较好。但是JS和CSS没有一个系统的学习方式,不要太依赖线上的博客和视频,推荐看看JS红宝书和CSS权威指南。要了解一些底层的东西。
  4. 技术面一共两轮吗?只有一轮,后面就是hr面了。

避雷搜狐:口头offer被鸽

我还是挺想去搜狐的,hr5.31给了口头offer,问6.3(周四)能不能入职,我说6.3有事,6.4才能去,她说找人帮我代办入职。后来加了另一个hr微信,又说代办比较麻烦,6.10(下周四)再入职(只能每周四办入职)。结果,6.3和我说,因为我一周去三天太少,领导不批offer,让我6.4不用去了。真是无语了!

6.1 贝壳找房前端一面 - 视频面30min

贝壳首先是要做一个线上的测评,我是5.20线下投递,5.28做完测评当天就给我打电话约了一面时间,效率很高的一家公司!一面完过了十分钟就给我打电话让我接着二面,二面完过了十分钟又给我打电话约了6.3的hr面(如果不是因为接下来我有事估计就是接着面了)。贝壳的面试官人都很好!!一面面试官是个口音有点重的小哥,好几次没听清楚他问我什么hhh,但也因此感觉特别接地气,很和蔼可亲。

自我介绍+项目

  1. 你的项目用过哪些页面布局?比如说flex
  2. 项目用的是vue哪个版本?vue的双向绑定原理了解过吗?用vue-cli创建的项目是吗?
  3. 编译工具是webpack是嘛,用vue-cli创建完后,webpack各种loader了解过吗?比如说样式构建使用css-loader、style-loader,图片的话用url-loader。
  4. 项目里和后端接口交互用的什么做的?异步请求?ajax?
  5. 你们的项目用了什么组件库?

前端知识+计网

  1. 了解HTML5吗?简单说一下HTML的语义化标签
  2. 说一下CSS里的单位,比如说px、em、rem
  3. 了解过BFC吗?
  4. 输入url到页面显示发生了什么?
  5. 说说客户端拿到服务器返回的HTML信息之后的重绘和渲染的区别是什么?
  6. 谈谈JS的闭包
  7. JS的深拷贝和浅拷贝了解过吗?
  8. JS的前端的缓存cookie,session storage和local storage的区别?
  9. 了解过浏览器的同源策略吗?比如说在请求的时候跨域了,怎么解决这个跨域?

git知识(简历上写了这个)

  1. 之前用过github?github里有自己写的项目吗还是只是用来收藏一些资料?
  2. 用过git命令吗?比如说克隆一个项目是用git clone还是用的工具?
  3. 比如说拉取一段代码,git pull然后后面是怎么写的?
  4. 了解过git pull和git rebase的区别吗?
  5. git flow工作流了解过吗?比如说3-5人开发的项目里,创建分支怎么规范?

算法题

  1. 用JS写一个冒泡排序

反问

  1. 部门和业务?
  2. 点评面试表现?(这里又问了我一个根据什么来定义自己想从事前端这个岗位的?)
  3. 建议的前端的学习方法?

6.1 贝壳找房前端二面 - 视频面50min

马上二面是我没有预料到的,因为我说了很多不会的,感觉在前端知识方面还有很多要学习。而且一面面试官最后特正式地说了一句“感谢你选择投递贝壳”,还以为这是暗示我已经凉了,没想到还有二面。

二面的面试官好会引导人思考,特别循循善诱!因为是科班出身,他问了我一些前端以外的软件开发过程的问题。我之前的面试都感觉面试官提问题都是东一榔头西一棒槌的,而这一面就感觉是把很多东西给串起来。我回答不出来的,他都会给我讲解引申一下,很有交流探讨的感觉。

开放性问题+聊项目

  1. 介绍一下学习经历包括一些在校期间参与的一些项目

  2. 对前端的理解

    你对前端的理解?你觉得前端在一个公司里面主要应该扮演一个什么样的角色?(面向终端使用者,注重交互流畅、用户体验)前端分几个部分,第一个部分是可视化,另一个部分是数据方面的,一些非业务数据的,比如一个购物网站,我们可能并不关注用户下单之后的动作,我们可能会关注用户下单之前的动作,你能大概理解前端在一个项目开发过程中的意义吗?以你的项目为例,研发人员是分为多少个角色,他们是怎么互相协作的?

  3. 前后端合作

    那前端和后端合作的过程中,你刚刚提到了前端先写好接口标准,给到后端开发,但你觉得这种合作方式有没有什么弊端呢?

    一般的企业里,一个前端要对3-4个后端,接口如果是前端来定的话,要求前端对业务非常熟悉,但大多数项目中,基本都是后端先了解业务以后,将接口文档给到前端以后,前端做mock,然后才开始做开发。所以一般情况下,标准是后端开发来定的。

  4. 测试

    你刚刚提到的衔接链里少了一个关键的部分是测试,那你对测试是怎么看呢?你觉得前端应该做哪些测试?QA了解吗?你觉得前端从代码和交互上都需要通过哪些测试以后才能上线?

  5. 单元测试

    我们一般的测试分两种,其中一种是代码测试,代码测试可能就是一段单元测试,那你之前了解过单元测试吗?大概是什么东西?定义方面的就可以。

    单元测试就是可能会去看某一个函数有没有成功,或看某一个页面有没有渲染成功。

  6. 自动化测试

    单元测试以外,还有一种是自动化测试,自动化测试就是比如说,前端涉及到的点击事件,人工测点击事件需要功夫,所以我们就需要有自动化测试来模拟操作,那你之前有没有了解过这种UI模拟的测试?或者说让你来做的话,你有什么思路?说一下思路就可以。

    因为咱们所有页面都是通过DOM结点组成的,你所有的操作实际上都是DOM结点,那我们既然要做一个自动化测试,就是一个模拟DOM操作的过程,那你觉得我们应该怎么模拟呢?比如现在一个表单提交,表单就是一个登录,有用户名有密码,然后再点击确定,这个操作作为一个测试单元,如果让你来做这个自动化测试的话你有什么思路?

    一个前端产品的上线,除了你刚才说的要从需求到开发,还要有测试。不需要太专业,但还是希望对这个项目有一个整体的把握,各个环节点做的程度不一样但至少要做到。

  7. webpack

    我看你还写了基于webpack构建的项目环境,那你首先解释一下什么是webpack,你用它做什么?

    webpack主要还是解决一个模块化编译的问题,比如处理一些css文件,一些静态文件,或者要把编译的东西进行拆包和打包。在webpack没有出现之前,JS是比较分散的。一般我们会把一堆JS打包成一个或多个,主要是为了一个编译的问题,webpack里面有很多loader,后续你可以了解一下。webpack里面有很多配置信息你们知道吧,你项目里面是拿过来直接用呢,还是加入了自己的一些自己配置信息?那你们webpack打出来的文件,是打成一个了还是打成多个了呢?

    比如在开发工作中,从10到20个JS文件,最好打包成一个文件,你觉得这是好还是不好?

    比如说一个系统,打成了一个JS和一个CSS,那么刚打开界面的时候就要把这个JS和CSS加载进来,如果说你把这个文件叫做1.js,你每一次打包都会产生一个1.js的文件,那它会产生一个什么样的不良问题?

    这个问题可能和缓存有关。比如版本1打出一个1.js,版本2也打出一个1.js,这两个1.js内容不一样,但名字不一样,当我发到线上的时候,可能因为缓存发生什么样的问题?(有的用户因为手机或电脑设置不一样,发了第二个版本以后,他还处在第一个版本,就是根本没更新到上面)

    所以webpack打包的时候就有一个设置,每一次打包的名字是不一样的,打一个和打多个的区别就出来了。如果一个项目特别大,就打出一个JS,它文件也会很大,这就涉及到前端加载效率的问题。如果打成多个呢,就有一个异步加载的过程,效率就比较平滑。

  8. 页面优化

    刚才我说的所有都是一个页面优化的问题,那除了我说的这些,你知道哪些常用的页面优化的方法?(减少HTTP的请求)怎么减少?

  9. HTTP状态码

    HTTP请求需要的类型比较多,涉及到很多状态、很多请求方式,比如说web socket听说过吗?HTTP状态码200和401?(200是请求成功,401是没有权限,500是服务器错误)

  10. node

    后端不只支持一个部门,导致数据接口不能像我们要求的一样。比如说首页我们要访问十个数据源,后端给我们提供了十个接口,后端这十个接口可能别人也在用,所以他不可能给你变成一个,那这样的话作为前端有什么解决方案吗?一下子加载这十个接口肯定是不行的,效率太低下,产生错误的几率、用户打开的速度肯定都会受影响。那你有什么处理的思路?

    如果后端能帮你解决这个问题,你要提一个什么方案?(变成一个)在后端没有办法完成的情况下,前端有一个工具可以实现,node或者dnode。node可以限制或者合并一些访问,推荐你看一些公众号上的关于node的实践。

  11. vue

    项目为什么用vue,怎么选的框架?在你之前没有学vue之前是怎么写的js?那你觉得vue解决了一个什么问题,为什么大多数人用vue这种框架写而不是用原生JS去写?

    vue是数据驱动的,页面的改变和渲染是通过接口数据、返回数据不一样导致的。那你有没有思考过为什么是以数据驱动去做渲染,而不是事件驱动?

    之前前端用的jQuery有了解过吗?它就是事件驱动的。

    无论是vue还是react,里面都有一个子组件和父组件,你理解组件这个概念吗?

    比如一个input输入框,有时候我希望输入的是纯数字,有时候必须是身份证号,有时候希望输入的是手机号,说明input就有很多的可能性。如果input具备了以上的所有属性,它的属性就变广了,那前端是怎么知道它有时候输入的是身份证号,有时候是手机号?就是把一个input输入框变得更有可能性,支持更多的业务,把它封装起来,它就可以称作组件。input是表单里面的一个组成部分,那表单就是父组件,input就是子组件。

    你们这个项目里面,有涉及到表单验证的方面吧?如果要保证填入的是身份证号,应该怎么做?(正则表达式),正则表达式你了解多少?

  12. 项目中遇到过的最难的问题是什么,怎么解决的?

前端知识+计算机网络

  1. JS里的栈和堆的区别?
  2. ES6里的基础数据类型?(新增Symbol)
  3. JS里的深拷贝和浅拷贝?
  4. 三次握手和四次挥手的过程?

算法题

  1. 给定一个字符串chas[],其中只含有字母字符和“*”字符,现在想把所有“*”全部挪到chas的左边,字母字符移到chas的右边。完成调整函数。

    示例:把’o*f*f*e*r*‘变成’*****offer’

反问

  1. 点评面试表现(整体还可以,有些地方还需要加强,比如对自己简历上的项目要非常熟练才行)

6.2 北京思特奇前端笔试+面试 - 线下面20min

从学校坐车过去思特奇大概40分钟,是在一个科技楼的一层里面。进去之后就到一个会议室面试。面试体验就还行,基本是在聊项目和前端知识,没有问算法题。

自我介绍+项目

  1. 聊一下项目里vue使用?vue里面的路由?
  2. 你这两个项目,你选一个你最熟悉的,参与度比较高的项目,介绍一下你在这里面负责的主要工作
  3. 这里面有没有什么你觉得比较复杂的工作?或者是你有没有遇到一些问题,怎么解决的?
  4. 你现在要实现一个可编辑的表格,每个单元格是有id的,我想拿这个单元格里的文本,用js去写怎么写呢?
  5. 你的项目中和后端的交互是通过什么来实现的?ajax有了解过吗?

前端知识

  1. 原生的JS和CSS了解吗?简单介绍一下CSS样式覆盖的规则?有个专业名词叫什么?(就近原则)
  2. 重绘和回流
  3. 精灵图接触过吗?

其他问题

  1. 求职意向是前端工程师?你的专业是软件工程?前端开发是你们必修的课程吗?能说一下为什么去的是软件工程但选的是前端开发吗?就是为什么学的是软件工程但求职要往自己自学的一个前端的方面去找工作?(我没懂他为什么这么问,感觉他听到我的回答也不是很满意)
  2. 平常在项目当中或者学习当中遇到自己不熟悉的或者没有接触过的技术,一般是怎么解决这个问题的呢?
  3. 有看什么专业的书籍呢?
  4. 你的求职意向是前端开发工程师,你在这块自己做过什么相关工作?愿意更多地加入到项目里面呢,还是自己下功夫对基础知识有个了解?就是为前端工作做过什么前期准备?

反问

  1. 公司的业务以及技术栈?
  2. 对于前端学习的建议?(前端基础知识+项目实践)

出来之后hr进去和面试官交流,然后hr就告诉我面试不通过,让我回去了。他们这种中小型公司比较偏好那种拿来就用的实习生,估计看我还是缺乏基础知识加项目实践的经验就挂了。

6.3 贝壳找房hr面 - 视频面20min

贝壳hr面试官是个很可爱的小姐姐,基本上都是在闲聊+确认信息。基本上我说话的时候她都会点头或者说嗯,会给我一个反馈,鼓励我继续说hhh,很轻松的氛围,一点儿也不紧张。

  1. 自我介绍
  2. 你们主要学了哪个方面的知识你觉得比较匹配这个岗位?
  3. 为什么选择前端作为你未来的职业方向?
  4. 有计划考研吗?(回答不打算)为什么呢?
  5. 是从什么时候对前端这个方向有了解并感兴趣的呢?
  6. 你一般通过什么渠道自学?
  7. 介绍一下你的项目?都是什么背景?主要是谁来使用?
  8. 你自己觉得大学期间做的最有成就感的事情是什么?
  9. 有没有比较挫败的事情?(8,9两个问题回答得不算太好,需要再准备一下)
  10. 你们是大一之后才选的专业还是入学之前选的专业?你喜欢现在读的这个专业吗?
  11. 自己有没有想过未来大概的规划?
  12. 对于你之后想做的行业还有企业类型有没有偏好?为什么想去互联网行业?
  13. 互联网行业,现在社会舆论都是说比如加班或者996,比较严重内卷,你怎么看待这个情况?
  14. 为什么投递贝壳?之前有了解过是干什么的吗?
  15. 你现在手头还有其他的offer吗?是哪家公司呢?你是更喜欢这种偏社交行业的还是说像我们这样偏b端客户的呢?
  16. 大概能实习多久?到岗时间最快是多久?所以要7月底才能开始暑期?(又说错了,应该是7月中旬。。甚至为了实习翘几节小学期的课应该也不是不行)
  17. 未来打算去哪个城市?所以不打算留在北京是吗?(最最最不应该犯的错误,我太傻了,应该说要留在北京的!!!)
  18. 反问:工作氛围、企业文化?大概多久有结果?(一周工作日)

猜你喜欢

转载自blog.csdn.net/ycsss/article/details/117732980