字节跳动面试总结

362 阅读4分钟

面试总结: 非计算机专业,没有项目经验,重点考察理论/逻辑基础:大体了解,但细节和关键点知识有所欠缺(3分一下是没回答好的) 3- 前端:了解一些基础知识,但是实践缺乏 3- 性格:主动性好,善于表现自己 3 逻辑思维/代码:一般,遇到困难的地方容易表现混乱 3- 整体评价:主动好学,有一定自学成果,但缺乏实践机会,逻辑和代码表现一般,建议二面考察下可培养价值 3 1. 基础 - 连接过程,握手 -- 3 - 报文格式,常见 Header -- 不太清楚 http常见的报文格式:

// 请求报文是由请求方法,请求URI,协议版本,可选的请求首部字、段,和内容实体组成。
// 请求报文的构成:
// POST /form/entry  HTTP/1.1=>协议版本
// 请求首部字段:Host: hackr.jp
// connection: keep-·alive
// content-type: application/x-www-form-urlencoded
// content-Length
// 内容实体: name=ueno&age=37


// 响应报文的组成:
// 协议版本 状态码 状态码的原因短语
// HTTP/1.1 200 OK
// 响应首部字段
// Date: Tue,****** GMT
// Content-Length: 362;
// Content-Type: text/html 

// 响应主体:
// <html>

告知服务器意图的HTTP方法: GET方法:获取资源 POST:传输实体主体; PUT:传输文件 HEAD:获得报文首部 DELETE: 删除文件 OPTIONS: 询问支持的方法。 TRACE: 追踪路径。

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

2.5 - 缓存原理 -- 3 2. JS - 封装队列,栈操作 -- 思路有点混乱,经几次提醒才答出 2.5 - 重排和重绘,优化 -- 基本理解 3 - eventloop,微任务/宏任务 -- 基本了解 3 3. Vue - 双向绑定原理 -- 基本了解,了解过 vue3 3+ 4. CSS - 计量单位,物理像素

// CSS计量单位
/*
我们可以这样来设置1em,0.5em,1.5em等,而且“em”还可以指定到小数点后三位,比如“1.365em”。而其中“相对”的意思是:

1.相对的计算必然会一个参考物,那么这里相对所指的是相对于元素父元素的font-size。比如说:如果在一个<div>设置字体大小为“16px”,此时这个<div>的后代元素教程了是将继承他的字体大小,除非重新在其后代元素中进行过显示的设置。此时,如果你将其子元素的字体大小设置为“0.75em”,那么其字体大小计算出来后就相当于“0.75 X 16px = 12px”;*/
// 参看下面的链接:

blog.csdn.net/javaloveiph…

  1. -- 了解较少 2.5
    1. 代码 - 两个数据查找相同元素 -- 实现很快,能优化
  2. 3 - 两个字符串查找最长重复子串 -- 未能实现 2.5
 public static int getLCS(String s1, String s2) {
        char[] ch1 = s1.toCharArray();
        char[] ch2 = s2.toCharArray();
        int[][] dp = new int[ch1.length+1][ch2.length+1];

        //int max = 0;
        //int right = 0;
        for(int i = 1; i <=ch1.length; i++){
            for(int j = 1; j<= ch2.length; j++){
                if(ch1[i-1] == ch2[j-1]){
                    dp[i][j] = dp[i-1][j-1] + 1;
                } else {
                    dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
                }
            }
        }

        return dp[ch1.length][ch2.length];
    }

//        for(int i = 1; i<= ch1.length; i++){
//            for(int j = 1; j<= ch2.length; j++){
//                if(ch1[i-1] == ch2[j-1]){
//                    dp[i][j] = dp[i-1][j-1] + 1;
//                    if(dp[i][j] > max) {
//                        max = dp[i][j];
//                        right = i;
//                    }
//                } else {
//                    dp[i][j] = 0;
//                }
//            }
//        }
//
//        System.out.println(max);
//        System.out.println(right);
//
//        System.out.println(s1.substring(0,0));
//
//        return s1.substring(right-max,right);
//    }

css像素补充: 1、px:相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

2、em:相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。 看下面例子: HTML:

body
div1
div2
div3

CSS:

div{ font-size:1.5em; }

计算关系是这样的:

body的font-size是继承自跟元素html,html的尺寸是浏览器默认尺寸14px; div1的font-size=1.514px = 21px; div2的font-size=1.521px = 31.5px; div3的font-size=1.531.5px = 47.25px; 如果手动设置div2的font-size为40px,div3的font-size应该为1.540px = 60px。

3、rem:相对长度单位。r’是“root”的缩写,相对于根元素的字体大小。

例如还是上面的html代码,添加如下样式:

.div3{ font-size:1.5rem; }

这里写图片描述

此时div3的font-size = 1.514px = 1.5html的font-size

4、vh and vw:相对于视口的高度和宽度,而不是父元素的(CSS百分比是相对于包含它的最近的父元素的高度和宽度)。

1vh 等于1/100的视口高度,1vw 等于1/100的视口宽度。

比如:浏览器高度900px,宽度为750px, 1 vh = 900px/100 = 9 px,1vw = 750px/100 = 7.5 px。

很容易实现与同屏幕等高的框:.slide { height: 100vh;} 设置一个和屏幕同宽的标题,h1{font-size:100vw},那标题的字体大小就会自动根据浏览器的宽度进行缩放,以达到字体和viewport大小同步的效果。

5、vmin and vmax:关于视口高度和宽度两者的最小值或者最大值。

比如,浏览器的宽度设置为1200px,高度设置为800px, 1vmax = 1200/100px = 12px, 1vmin = 800/100px = 8px。如果宽度设置为600px,高度设置为1080px, 1vmin就等于6px, 1vmax则未10.8px。

有一个元素,你需要让它始终在屏幕上可见:

.box { height: 100vmin; width: 100vmin; }

如果你要让这个元素始终铺满整个视口的可见区域:

.box { height: 100vmax; width: 100vmax; }

参考:j.news.163.com/docs/99/201…