首页 > 贝壳找房前端实习一二三面面经
头像
riiise
编辑于 2021-06-20 11:08
+ 关注

贝壳找房前端实习一二三面面经

贝壳首先是要做一个线上的测评,我是5.20线下投递,5.28做完测评当天就给我打电话约了一面时间,效率很高的一家公司!一面完过了十分钟就给我打电话让我接着二面,二面完过了十分钟又给我打电话约了6.3的hr面(如果不是因为接下来我有事估计就是接着面了)。贝壳的面试官人都很好!!

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

一面面试官是个口音有点重的小哥,好几次没听清楚他问我什么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. 建议的前端的学习方法?

(我发现多面试的好处就是我把我不会说得更理直气壮了。(bushi)

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.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. 反问:工作氛围、企业文化?大概多久有结果?(一周工作日)

最后

已经面完过了一周多了还没变状态(一直是进行中)估计凉了吧hhhh那么也许就直接不实习,,秋招了吧hh

更多模拟面试

全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐