字节跳动前端面经(1面+2面)
1面(50min):
1. CSS实现中间自适应,两边固定300px(手写代码
2. 输出题(需要阐述原因):
var a = function () { this.b = 3 }; var c = new a(); a.prototype.b = 9; var b = 7; a(); // 给出下面的执行结果 console.log(b); console.log(c.b);这样呢?
var a = function () { this.name = 3; } var c = new a(); a.prototype.b = 9; console.log(c.b)3. 输出题(需要阐述原因):
setTimeout(function() { console.log("setTimeout"); }) new Promise(function(resolve) { console.log("promise"); for (var i = 0; i < 10000; i++) { if(i === 10) { console.log("for"); } if(i === 9999) { resolve("resolve"); } } }).then(function(val){ console.log(val) }); console.log("console");4. 说说HTTP和HTTPS -> 追问数字证书的作用
5. 说说跨域的解决方案 -> 追问了解 CORS的预检请求吗
6. 描述VueRouter如何实现单页
7. 写代码
function parseUrl(url) { // 代码实现这个函数 } console.log(parseUrl("https://a.b.come?aaa=123&bbb=hhah&ccc=456")); // 希望返回如下 { aaa: "123", bbb: "hhah", ccc: "456" } console.log(parseUrl("https://a.b.come?aaa=123&bbb=hhah&ccc=456&ccc=789")) // 希望返回如下 { aaa: "123", bbb: "hhah", ccc: ["456", "789"] }8. 求二叉树的公共父节点
2面(60min):
1. 外边距塌陷产生的原因 -> 如何解决 2. 如何给图片设置一个兜底图
3. utf-8 编码 -> 常见的汉字字符占几个字节
4. 你了解有哪些 HTTP 头字段 -> 说的越多越好
5. 如何判断 ip 地址是哪类( A类,B类,C类这种
6. HTTP缓存谈谈(越多越好
7. 缓存我谈到了CDN -> CDN的作用 ,CDN为什么快
8. CDN和DNS之间的关系
9. 0.1 + 0.2 不等于 0.3 的原因 -> 还追问了我小数如何转二进制
10. import 和 require 的区别 -> 为什么有这两种模块化
11. JS中如何创建一个可读的对象 -> 本来我答的是 Object.defineProperty,后来答到了Object.freeze()
var object = {"a" : [{"b": {"c" : 3}}]}; get(object, "a[0].b.c"); // => 3 get(object, ["a", "0", "b", "c"]); // => 3 get(object, "a.b.c", "default"); // => "default"12. 没时间了,求两个整数数组中的公共数字(交集)