天天看点

字节跳动 前端 面经 实习-国际化短视频

面试时间: 2021年6月21日

一面

1、CSS选择器有哪些、优先级如何

注意一下兄弟、父子选择器的优先级

2、position有哪些取值?absolute和fixed的区别

3、说一下移动端viewport

4、Vue的响应式原理,以及为什么不能检测到对象、数组内部的变化,应该如何处理

创建Vue实例时,将data中所有property遍历,通过Object.defineProperty设置getter、setter,通过观察者模式(watcher),在调用setter时(修改数据时),通知依赖更新

5、改错题:

下面代码存在一些问题,请指出问题并改正

var coder = {
    name: " jsCoder",
    skill: ["css3","html5", "es6", "react", "angular", "vue"],
    say: function () {
        for(var i = 0, len = this.skill.length; i< len; i++){
            setTimeout(function(){
                console.log("No." + i + this.name);
                console.log(this.skill[i]);
                console.log('--------------------------');
            },1000);
        }
    }
}
coder.say();

//以下为预期输出

No.1 jsCoder
css3
--------------------------
No.2 jsCoder
html5
--------------------------
No.3 jsCoder
es6
--------------------------
No.4 jsCoder
react
--------------------------
No.5 jsCoder
angular
--------------------------
No.6 jsCoder
vue
           
  • this指向问题。settimeout中的this是直接指向window的,这样访问不到对象的属性
  • 宏任务问题。settimeout是宏任务,所以每次for循环中并不会直接执行,而是在for循环结束后才执行。此时,已经 i = len-1 了,所以输出的所有 i 都为len - 1
  • i 的初始值问题。i 应该初始化为1才能达到预期输出。

6、实现函数

实现如下函数add,使如下执行都等于9

add(2,3,4)=9
add(2)(3,4)=9
add(2)(3)(4)=9
add(2,3)(4)=9
           

函数柯里化思想。该题关键在于参数长度要为3。

7、算法题

给定一个字符串,请你找出其中不含有重复字符的 最长子串(substring) 的长度。

滑动窗口思想

二面

1、实现函数

压缩字符串

‘aaaaaabbbbbcccceee’ => ‘a6b5c4e3’

‘aaaaaabbaaa’ => ‘a6b2a3’

2、浏览器发出请求到显示页面,经历了什么

这题让你说的越详细越好,考察整个前端知识体系吧

3、三次握手、四次挥手

4、HTTP不同版本特点

5、算法题

给定一个由’1’(陆地)和’0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:

[

[1,1,1,1,0],

[1,1,0,1,0],

[1,1,0,0,0],

[0,0,0,0,0],

]

输出: 1

示例 2:

输入:

[

[1,1,0,0,0],

[1,1,0,0,0],

[0,0,1,0,0],

[0,0,0,1,1],

]

输出: 3

6、组件封装的看法,如果封装搜索功能需要考虑哪些功能

我的回答是,搜索功能可能会考虑一些 判空情况、过滤脚本字符串、长度限制、是否实时显示搜索结果(基于@input事件或@confitm事件)、如果基于@input的话还需要考虑防抖,然后让我实现一个防抖函数。

三面

三面挺特殊的,一开始聊了会天,得知面试官在国外,并且是java工程师,因为面试官不够了就让他来面。之后就直接上算法题了。

题目不是直接给到牛客,所以我凭印象复述一下。

给定一个二维数组路径,其中数组路径中0为起点或终点,1为路径,2为墙壁,给出起点到终点的最短路径。

给题后问我有思路吗?

应该是DFS算法吧

那时间复杂度是多少呢?

emm(不会)

那你先实现一下吧

最后没完全实现出来,就实现了一个DFS

面试官人很好 说差不多了,然后问我有什么问题问他

我问了问部门职责什么的

结果:

之后看到校招官网上进度是绿色的面试已完成,看牛客上说这样是面试过了。结果几天后晚上正在操场散步接到HR电话,说很遗憾…

心情复杂

面试总结

在一些理论知识方面,如http协议、浏览器请求过程、渲染过程等模块,需要应试者成体系的掌握这些过程。在实践编码方面,字节确实重视算法,而且需要你手动实现,这就需要我们花时间去理解一些算法思想(还是坚持刷LeetCode吧)以及有夯实的coding功底(临场不乱的思路)了

继续阅读