字节跳动飞书前端实习生一面
面试流程:1.前端:JS和CSS相关的基础 2.编程题
自我介绍
React里面调用(XX听不清)state是一个同步还是异步的过程?
熟悉那些ES6的语法特性?
答:增加了箭头函数,Sybmol这一新的数据类型,具有块级作用域的let,解构赋值;
箭头函数是为了解决什么问题,与普通有什么区别?
答:代码看起来更简洁。不能使用arguement。
this这个值是怎么确定的?
答:箭头函数的this是静态的,普通函数的this是静态的。
this指向哪里?
答:要看它在哪里定义这个函数。箭头函数的this是为了指向父级作用域的对象。
面试官总结:箭头函数与普通函数的区别在于argument和this这两个是有特殊性的。
对JS里面的对象继承的方式有了解吗?代码复用。
答:通过原型来实现的。通过是的子类的原型对象等于父类的实例对象来实现,使得子类可以复用父类的一些属性和方法。
可以写一下代码吗?(然后就大概写了一下)
其实还有一些问题,因为它需要每次都去实例化一个父类对象。
有了解JS里的柯里化概念吗?
JS中的立即执行函数可以用来做什么?
CSS中两个块之间margin会塌陷是一种什么现象?
大概聊一下页面上输入一个url,到我看到这个url大概是一个什么样的过程?
答:浏览器发送http请求给服务器,服务器接收了这个请求之后,再发送一个具有响应头的信息给到浏览器缓存
输入的www.baidu.com这个域名是怎么到达百度的服务器的呢?
答:通过DNS解析器将域名解析为IP地址,在到对应IP地址上去拿东西
编程题:
输入:[1,[2,3,[4,5]]]
输出:[1,2,3,4,5]
(写不出来,因为我用的是Java啊,面试官觉得java好像确实不方便写,就换了一道题)
在二叉搜索树中找出第k小的值
比如:
5
/ \
3 6
/ \
2 4
/
1 ,k=3
输出3
刚开始做不出来,面试官对我进行了引导提示说进行中序遍历就可以了
比如这个树的中序遍历是1,2,3,4,5,6
遍历到第3个的时候就可以直接输出了。
问面试官的问题:对实习生的要求是什么?
对前端的了解不用特别深入,更多的是要求对一些数据结构,网络,基础的原理比较扎实的掌握。因为他们觉得你不用对JS语言有很深入的了解也能胜任一份工作。
更多看重编程和算法。
面试官说面试过程一定要保持阳光的状态,这样面试通过几率更大。