提前批字节抖音国际
项目经历 实习经历略过
http1.1 http2 长链接 多路复用之类
问了一些有关后端的,比如C#会不会 用过spring node会不会(最后问面试官说他们那有很多全栈)
promise的简单问题
很多印象不深了,唯一一个没有印象的题是:
window.onload和DOMContentLoaded的区别
一、何时触发这两个事件?
1、当 onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。
2、当 DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。
二、为什么要区分
开发中我们经常需要给一些元素的事件绑定处理函数。但问题是,如果那个元素还没有加载到页面上,但是绑定事件已经执行完了,是没有效果的。
这两个事件大致就是用来避免这样一种情况,将绑定的函数放在这两个事件的回调中,保证能在页面的某些元素加载完毕之后再绑定事件的函数。
当然DOMContentLoaded机制更加合理,因为我们可以容忍图片,flash延迟加载,却不可以容忍看见内容后页面不可交互。
1. 双栈实现队列
Suppose you have a stack, which has only follow interface:
class Stack {push(element) { /* add element to stack */ }peek() { /* get the top element */ }pop() { /* remove the top element */}size() { /* count of elements */}}
Could you implement a Queue by using only above Stack?
Note:you can only use Stack as provided, Array should be avoided for the purpose of practicing.
class Queue { constructor(){ this.stack1 = new Stack(); this.stack2= new Stack(); } enqueue(element) { stack1.push(element); } peek() { if(stack2.size()===0) this.tranform(); return stack2.peek(); } size() { return this.stack1.size()+this.stack2.size(); } dequeue() { if(stack2.size()===0) this.tranform(); return stack2.pop(); } transform(){ if(stack1.size()===0) throw Error('error') while(stack1.size()>0) { stack2.push(stack1.pop()); } } } }2.树的高度
get DOM tree height
Height of a tree is the maximum depth from root node. Empty root node have a height of 0.
If given DOM tree, can you create a function to get the height of it?
For the DOM tree below, we have a height of 4.
<div><div><p><button>Hello</button></p></div><p><span>World!</span></p></div>
/** * @param {HTMLElement | null} tree * @return {number} */ function getHeight(tree) { if(tree===null) return 0; if(!tree.children) return 1; let childMaxH=0; tree.children.map((item)=>{ childMaxH=Math.max(childMaxH, getHeight(item)); }) return 1+childMaxH; } function g