字节前端实习一面凉经

字节一面凉经

一开始调试设备调了一万年,更紧张了。。。

面试开始

  • 自我介绍 blabla
  • 项目介绍
    • 讲了一下将请求函数封装成Promise。
    • sqlite,封装了四个操作数据库的函数。
    • jwt,在后面的每次请求中带上这个token。
  • 简述一下Promise原理
    • 答:把Promise的实现基本都说了,除了一个怎么将值传递下去之外。
  • 状态之间可以相互转换吗?
    • 答:不可以,状态只能从PENDING转到另外两个状态,转化不可逆,后面两种状态之间不能相互转化
  • 怎么实现Promise的链式调用?
    • 答:在then中return一个新的Promise对象。
  • 项目中还用到了什么别的东西吗?
    • 答:长列表优化,前端进行了分页。
    • 问:为什么不让后端做分页?
    • 答:因为这些消息存在了本地数据库中。
    • 问:前端怎么实现这个分页的?
    • 答:从数据库中把所有的数据存到本地的一个数组中,然后创建一个空数组,这个空数组是用来渲染到页面中的,在后面的每次触底事件中,从前面的数组中pop一部分出来push到后一个数组中去。

一直到这里都感觉非常棒的,面试官听起来也还挺满意的。


  • 既然到这了,那说一下怎么判断空数组(好像是这样的,反正后来就开始说相等操作符了)

    • 答:可以使用[] == false或者[].length == 0判断是否为空数组(然后我给自己挖了个坑)
    • (沉默)
    • 答:还有的话就是!![]结果是true,但是[] == false的,它们两个的机制不一样
    • (开始搞事)问:那么你可以说一下他们有什么不同吗?
    • (想:好像是一个啥toString啥valueOf,顺序不记得了,就随便说了一个)答:应该是先调用valueOf吧?
    • 问:你确定?
    • 答:应该是吧。。
    • 问: 好,那你看一下下面这两个:
      • null == undefined
      • [] == 0
    • (第一个没什么悬念,第二个应该也是true吧)答: 两个都是true。
    • 问:那分别是为什么呢?它们底层的原理是怎么样的?
    • 答:(实际上慌得一批了已经,感觉踩雷了,这一块一直没记下来)第一个没什么好说的吧,高程上就是这么写的,第二个的话,因为有一个操作数是数字的情况下,会尽力将另一个数也转化成数字进行比较。
    • 问:那么会调用数组的哪个方法进行转化呢?
    • 答:不是很确定,应该是toString吧(实际上应该是先调用valueOf,再调用toString)
    • 问:好吧,那再看看下面这几个:
      • [0] == 0
      • 0 == {}
      • [] == {}
    • (然后我彻底把自己绕晕了,哔哩吧啦扯了挺久,然后面试官跳过了这个问题。)
  • for in、Object.keys、Object.getOwnPropertyNames的区别

    • 答:for in遍历的是可枚举的属性,Object.keys能遍历所有的属性(包括原型链上的),Object.getOwnPropertyNames不能读到原型链上的属性。
    • 问:Object.keys能遍历到不可枚举的属性吗?
    • 答:不是很清楚

到这里我心态已经有点崩了,,,但是感觉还能撑。然后开始问CSS了,本来听她说要问CSS了还松了口气,但是我后来发现,最近的两三周都在看JS,完全忘了CSS的内容了。(所以复习一定不要片面,否则之前会的现在都不会了!)


  • 你们在项目中有使用什么ui框架吗?

    • 答:并没有,我们只是使用了uniapp给的一些组件进行开发。
  • 我看你开发的是一个移动端的app,那能说一下rem原理吗?

    • 答:rem是根据body的属性计算的。
    • 问:body的哪个属性?
    • 答:font-size
    • 问:那它有什么替代的方案吗?
    • 答:uniapp中可以用rpx(尬笑)
    • 问:还有吗?
    • 答:vh那一套吗?(其实她就是想问一下响应式布局啥的,我一直get不到点)
    • 问:那你说说那几个吧。
    • 答:vh是视口的高度,vw是视口宽度,vmin是二者最小值,vmax是二者最大值。
  • 说一下rem和em的区别

    • 答:rem是相对body的font-size属性,em是相对父元素的font-size
  • position有多少种取值?

    • 答:relativestaticabsolutestickyfixed(太紧张了,一下没想起来了fixed,从这里开始心态彻底炸了)
    • 问:说一下他们的区别和用法
    • 答:说了一下relativeabsolutestatic因为记不起来fixed,然后就开始瞎掰。
  • 实现垂直居中和水平居中

    • 牛客的IDE起飞,没有html,然后我完全没有办法调试,就硬是拿js调试器打了个html,可太难了
    • 然后我用flex实现了一下,没问题
    • 问:可以用别的方法实现吗。
    • 于是乎我又写了个margin:0 auto;后面就卡住了,真的就很奇怪,把position完全忘了,之前用得那么溜的
  • 说一下v-model原理

    • 答:v-model是一个语法糖,是@input和v-bind的结合(刚好昨晚看了一下,稍微捡回一点信心)
    • 问:是v-bind了哪个值呢?
    • 答:既然是input组件,那就是value了吧。
  • 说一下兄弟组件之间的通信

    • 答:兄弟组件吗?是$emit()on()吗?
    • 问:应该不行吧,你再想想?
    • 我实在不知道了,没做过,我之前兄弟组件之间传值都是先从子组件传到父组件,父组件再到子组件的(紧张起来,连笨方法都忘了给人家说)

到这里人已经彻底傻了,心态崩完了。然后到了传说中字节面试最难的算法了


  • 两个算法:
    • 中缀表达式 转 后缀表达式(这个,emm,我能说我啥也不会吗,我都没听过这两个名词)
    • 大数相加(这个基本思路都对了,但是好像中间有些什么没有调出来,反正最后结果没出来,面试官说算了,就差不多了吧)
  • 然后就是反问了,这个时候我已经无欲无求了,根本脑子是乱的,就问了一下部门大概负责什么的,啥时候有结果

好了,一面凉经就完了,希望大家能好好学基础,包括计算机专业的基础课还有前端的基础啥的,准备一定要全方位,就没啥了,其实面试的知识点都还好,主要是没记住很难受。毕竟第一次面试,凉也是意料之中的,吸取教训,下次加油!

#实习##面经##字节跳动##前端工程师#
全部评论
大家轻点喷,本人真的菜😭
2 回复
分享
发布于 2020-11-22 22:32
实习问这么多吗惊了
2 回复
分享
发布于 2020-11-22 22:47
秋招专场
校招火热招聘中
官网直投
感觉好多还挺熟悉,我看那些校招的面经看得我一脸懵逼,感觉自己好像没学过一样😂
1 回复
分享
发布于 2020-11-24 20:25
实习就这么难吗?!!应届生瑟瑟发抖,不敢找工作了😥
1 回复
分享
发布于 2020-11-25 20:26
借个楼,字节跳动北京前端 社招校招实习都能内推。实时跟进。能捞人哦~
1 回复
分享
发布于 2020-12-05 10:56
当场就说凉了吗兄弟
点赞 回复
分享
发布于 2020-11-22 23:00
我看评论全是22前端呢😌,大家多准备找实习吗
点赞 回复
分享
发布于 2020-11-23 00:04
22的话感觉这个水平还是可以的,但是一看就知道不是很深入的去了解东西(判断数组那里很明显),建议多看看书籍,感觉你明年春招应该是个集邮大佬的
点赞 回复
分享
发布于 2020-11-23 01:34
不先去中厂试试水的嘛
点赞 回复
分享
发布于 2020-11-23 10:31
这是日常实习的面试吗
点赞 回复
分享
发布于 2020-11-23 10:40
Object.keys 返回给定对象的所有可枚举属性的字符串数组,不包含 原型链的,兄弟
点赞 回复
分享
发布于 2020-11-23 17:43
兄弟你是在牛客上申请实习的吗,我最近也打算申请字节的实习,你的简历上写了几个项目?
点赞 回复
分享
发布于 2020-11-25 20:43
大佬到我这试试呀
点赞 回复
分享
发布于 2020-11-27 23:39
大佬,想问一下用牛客网面试怎么写html跟css,没有找到对应的编辑器,只找到了js的
点赞 回复
分享
发布于 2020-12-03 08:58
楼主说要转正了没
点赞 回复
分享
发布于 2020-12-03 15:19
[0] == flase 不会的点这里:http://www.hhxlc.cn/article/AhIkZqltf1#3__39
点赞 回复
分享
发布于 2021-01-16 18:06

相关推荐

12 55 评论
分享
牛客网
牛客企业服务