12.14 蓝湖前端一面

时长:90min

面试官问得很灵活,是根据学了什么来问的,收获很大。

  • 自我介绍
  • 虚拟列表实现(答得不好)
  • 聊到了执行环境(聊了蛮久)
  • 手写执行环境伪码
  • 面试官说写一个闭包结合写的伪码来讲述执行环境原理
  • 聊到了继承
  • 有几种继承,它们的缺点是什么(没答得太好,用call继承的方案叫啥名儿忘记了,我说用call继承会让重复逻辑的函数重复创建,造成资源浪费,面试官说 错,然后进行了解释)PS:感觉我这么答也ok哇。
  • 之后给面试官说手写组合寄生继承被拒绝,说后面再写,其实能不能写出来心里也没底...
  • 原型式继承和原型链继承的区别
  • 我说会有一个原型键能否溯源的区别
  • 一个是直接new 一个是使用Object.create来在原型上去写
  • 手写obj.create()
  • 手写New
  • 类相关问题
  • 算法,图(没A出来),补充runAllTask函数,同时支持异步。
  • 解释:遍历input,比如遇到第一项,id为task1,deps依赖为空,第一项调用runTask就直接返回3;第二项deps依赖id为task1和task3的runTask返回值,因此res1为task1的返回值,res2为task2的返回值,但是此时task3还没有执行,因此本轮循环无法获取值;遍历到第三项时,依赖task1,可以获取到值,runTask返回8;
interface Task {
  id: string;
  deps: string[];
  runTask: Function;
}

const input = [
  {
    id: "task1",
    deps: [],
    runTask: () => 3,
  },
  {
    id: "task2",
    deps: ["task1", "task3"],
    runTask: (res1, res3) => 1 + res1 + res3,
  },
  {
    id: "task3",
    deps: ["task1"],
    runTask: (res1) => 5 + res1,
  },
  {
    id: "task4",
    deps: ["task1", "task2"],
    runTask: (res1, res2) => 3 + res1 + res2,
  },
];

function runAllTask(list: Task[],cb:any) {
	// ...
}

runAllTask(input, (err, res) => {
  console.log(res);
  /** 
    res应该为:
    { task1: 3, task2: 12, task3: 8, task4: 18 }
    */
});
  • 反问问面评 答:还可以,但是作为应届的同学算法有点薄弱(24届的同学算应届的同学吗,问号脸),会有2面。
  • 问团队做什么的,websocket使用多吗。 答:做B端的,不多。

倒了,无二面,但是收获很多,后面会去重新巩固基础。

#蓝湖##前端面经##面经##前端##面试复盘#
全部评论
这么卷
1 回复 分享
发布于 2023-01-13 18:33 广东
恐怖 问的那么难 这么卷以后还得担心中年危机
点赞 回复 分享
发布于 2023-02-27 15:05 广东

相关推荐

从输入URL到页面加载发生了什么:总体来说分为以下几个过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束。简述了一下各个过程的输入输出作用:以下是对从输入 URL 到页面加载各过程的输入、输出或作用的一句话描述:DNS 解析: 输入:用户在浏览器地址栏输入的域名(如 www.example.com)。输出:对应的 IP 地址(如 192.168.1.1)。作用:将易于记忆的域名转换为计算机能够识别和用于网络通信的 IP 地址,以便浏览器与目标服务器建立连接。TCP 连接: 输入:浏览器获得的服务器...
明天不下雨了:参考一下我的说法: 关键要讲出输入网址后涉及的每一个网络协议的工作原理和作用: 涉及到的网络协议: HTTP/HTTPS协议->DNS协议->TCP协议->IP协议->ARP协议 面试参考回答: 第一次访问(本地没有缓存时): 一般我们在浏览器地址栏输入的是一个域名。 浏览器会先解析 URL、解析出域名、资源路径、端口等信息、然后构造 HTTP 请求报文。浏览器新开一个网络线程发起HTTP请求(应用层) 接着进行域名解析、将域名解析为 IP 地址 浏览器会先检查本地缓存(包括浏览器 DNS 缓存、操作系统缓存等)是否已解析过该域名 如果没有、则向本地 DNS 服务器请求解析; 本地服务器查不到会向更上层的 DNS 服务器(根域名服务器->顶级域名服务器->权威域名服务器询问)递归查询 最终返回该域名对应的 IP 地址。(应用层DNS协议)DNS 协议的作用: 将域名转换为 IP 地址。 由于 HTTP 是基于 TCP 传输的、所以在发送 HTTP 请求前、需要进行三次握手、在客户端发送第一次握手的时候、( 浏览器向服务器发送一个SYN(同步)报文、其中包含客户端的初始序列号。TCP头部设置SYN标志位、并指定客户端端口 同时填上目标端口和源端口的信息。源端口是浏览器随机生成的、目标端口要看是 HTTP 还是 HTTPS、如果是 HTTP 默认目标端口是 80、如果是 HTTPS 默认是 443。(传输层) 然后到网络层:涉及到(IP协议) 会将TCP报文封装成IP数据包、添加IP头部,包含源IP地址(浏览器)和目标IP地址(服务器)。IP 协议的作用: 提供无连接的、不可靠的数据包传输服务。 然后到数据链路层、会通过 ARP 协议、获取目标的路由器的 MAC 地址、然后会加上 MAC 头、填上目标 MAC 地址和源 MAC 地址。 然后到物理层之后、直接把数据包、转发给路由器、路由器再通过下一跳、最终找到目标服务器、然后目标服务器收到客户的 SYN 报文后,会响应第二次握手。 当双方都完成三次握手后、如果是 HTTP 协议、客户端就会将 HTTP 请求就会发送给目标服务器。如果是 HTTPS 协议、客户端还要和服务端进行 TLS 四次握手之后、客户端才会将 HTTP 报文发送给目标服务器。 目标服务器收到 HTTP 请求消息后、就返回 HTTP 响应消息、浏览器会对响应消息进行解析渲染、呈现给用户
点赞 评论 收藏
分享
03-12 15:34
已编辑
北京邮电大学 Java
呓语0613:老哥你这黑马点评改造是在哪里看的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
9
18
分享

创作者周榜

更多
牛客网
牛客企业服务