字节跳动前端实习面经-3(一二面)

年前又面了一次字节跳动,不过还是凉了。趁着过年,把面经贴上来,供大家参考。

部门:上海-广告创意中心

一面(1月22日)
自我介绍
项目
项目有哪些难点
现在在做什么项目,介绍一下
URL输入以后发生了什么
script标签上的 async 和 defer 分别有什么作用
为什么JS执行的时候要阻塞HTML解析
HTTP2有了解吗
HTTPS有了解吗
TCP UDP的区别
XSS CSRF 有了解吗
事件委托、事件冒泡、事件捕获
手写事件委托
手写发布订阅 EventEmitter
CSS动画了解吗
JS如何实现动画
两个链表找相交节点
cookie和session了解吗,session有哪些存储方式
微信登录怎么实现
小程序的原理
看你写过爬虫,爬虫是怎么写的,数据存在哪里,怎么导出
NodeJS express koa 了解吗

手写事件委托的时候,对浏览器的API还是不够熟悉,思路基本上能想到,但是答案不完全正确。
两个链表找相交节点那道题我用了一个常规的双指针的做法,即每个链表上的指针走到尾以后,自动走到另一个链表的头,如此往复,如果有相交节点的话,两个指针必相遇。但是面试官说这个解法不够好。建议大家刷题的时候还是看看最优解法,我之前刷题的时候是解出来就算过了,看来还是要多下点功夫,更进一步。
有关「script标签上的 async 和 defer 分别有什么作用」那道题我还是存在疑问。我的回答是,没有 async 和 defer 的 script,加载和执行时都阻塞 DOM 的解析。带 async 的 script,加载的时候不阻塞 DOM 的解析,执行的时候阻塞 DOM 的解析。带 defer 的 script,加载的时候不阻塞 DOM 的解析,并且在 DOM 解析完成后才执行,所以也不阻塞 DOM 的解析。但是面试官说我的理解是错的。不知道有没有懂哥懂的。

二面(1月26日)
自我介绍
聊了很久的项目
setInterval 的细节
Promise 的细节

这次二面是被问及知识点最少的一次,大约三分之二的时间在聊项目,最后一点时间出了两个题。项目部分其实比较好发挥,因为都是自己做过的东西,问了这么多项目的细节可见面试官也是给了我不少机会的。但是最后 setInterval 的执行机制和 Promise 回答得实在有点拉胯,所以这次二面以后还是没了三面。
setInterval 的话面试官是给了几个 case,比如 set 一个 Interval 多少毫秒的,再 set 一个 Timeout 多少毫秒的,重复设置,当中有重叠,问他们的行为。这个题目具体的记不清了,当时也没答对。现在再看这倒题的话其实只要记住,setTimeout 和 setInterval 是在相应的时间把任务添加到任务队列,但不能保证它立即执行。记住这个点应该就能够解决这类问题。
Promise 的话问在一个 if 中,resolve 或者 reject 之后需不需要 return。一开始我觉得是 return 一下更保险的,但是这道题的考点其实是 Promise 的状态一旦变成 fulfilled 或者 rejected 以后,就不能再改变了。手写一遍 Promise 的源码的话其实会知道,resolve 或 reject 在被调用时,前面都有一个判断 if (this.state === "pending"),如果 Promise 的状态不是 pending 的话,Promise 相应的解析值或者错误值就不会被改变。

总结:
比起前面两次,这一次准备得算是比较多了,常规的面经中刷到的题目基本上都准备了。但是面向面经准备也有一个弊端,即知识不够系统。其实几次面试下来,面试官给的反馈都是,知识不够系统。对于在看面经的朋友们,还是建议多看红宝书、精通CSS之类系统性的书籍,对构建知识体系比较有帮助。尤其像前端这种大学里没有开设专门课程,或者开设的课程比较基础比较落后的,在自学的过程中更应该有意识地去搭建知识的系统和网络。


#实习##面经##字节跳动##前端工程师#
全部评论
加油💪
点赞 回复
分享
发布于 2021-02-13 15:23
什么部门呀
点赞 回复
分享
发布于 2021-02-13 18:21
阅文集团
校招火热招聘中
官网直投
事件委托是给了具体场景么😳😳
点赞 回复
分享
发布于 2021-02-13 18:25
点赞 回复
分享
发布于 2021-02-13 20:39
居然没有问vue\react\webpack?
点赞 回复
分享
发布于 2021-02-15 22:49
楼主做的大概是什么项目,有用框架吗?
点赞 回复
分享
发布于 2021-02-19 11:40
想请问一下楼主,对于事件委托的那道题是写一下事件委托的思路还是,在什么情景下进行事件委托
点赞 回复
分享
发布于 2021-02-21 16:33
//事件委托code void WeituoInfo::initData(Event ev) {     grid_data_list.clear();     QMap & all_order = me->me_getOrderInfo();// me_getWorkingOrderInfo(); 有效委托   me_getOrderInfo();所有委托     QMap ::iterator it;     for (it = all_order.begin(); it != all_order.end(); ++it)     {         grid_data_list.append(*it);     } }
点赞 回复
分享
发布于 2022-03-15 21:09
//事件冒泡code int main() {     int ix;     int a[] = {8, 34, 3, 13, 1, 21, 5, 2};     int a_length = (sizeof(a)) / (sizeof(a[0]));   // 获得数组的长度s     cout << "冒泡排序前:";     for (int ix = 0; ix < a_length; ix++)         cout << a[ix] << " ";     cout << endl;     bubleSort(a, a_length);     cout << "冒泡排序后:";     for (int ix = 0; ix < a_length; ix++)         cout << a[ix] << " ";     cout << endl;     return 0; }
点赞 回复
分享
发布于 2022-03-15 21:12
//事件捕获code bool BitcoinGUI::eventFilter(QObject *object, QEvent *event) { //捕获状态提示事件     if (event->type() == QEvent::StatusTip)     { //如果当前使用状态栏显示其他内容,请阻止从setstatustip()添加文本。         if (progressBarLabel->isVisible() || progressBar->isVisible())             return true;     }     return QMainWindow::eventFilter(object, event); }
点赞 回复
分享
发布于 2022-03-15 21:13
async和defer加载的js资源好像都是不能操作DOM的吧,所以不会阻塞DOM的解析,异步加载js资源
点赞 回复
分享
发布于 2022-03-15 21:15
//发布订阅 EventEmitter code // 当某配置发生变化时,通知到已订阅的客户端 void HocfgMgr::notifyChange( const string& filename, int mtime ) const {     string aliasPrefix = _F("%s_%s@", BOOK_HOCFG_ALIAS_PREFIX, filename.c_str());     CliMgr::AliasCursor alcr(aliasPrefix);     CliBase *cli = NULL;     vector vecCli;     string msg("{");     StrParse::PutOneJson(msg, "notify", "cfg_change", true);     StrParse::PutOneJson(msg, "filename", filename, true);     StrParse::PutOneJson(msg, "mtime", mtime, false);     msg += "}";     while ((cli = alcr.pop()))     {         IOHand* iohand = dynamic_cast(cli);         if (NULL == iohand)         {             LOGWARN("NOTIFYCHANGE| msg=book from ocli| cli=%s| file=%s",                     cli->m_idProfile.c_str(), filename.c_str());             continue;         }         iohand->sendData(CMD_EVNOTIFY_REQ, ++m_seqid, msg.c_str(), msg.size(), true);     } }
点赞 回复
分享
发布于 2022-03-15 21:16
大佬楼主 可以加个微信学习吗 lambda-hd 非常感谢
点赞 回复
分享
发布于 2022-03-18 00:24

相关推荐

22 83 评论
分享
牛客网
牛客企业服务