快手一二面凉经

一面

  1. css盒模型:ie盒模型border-box、标准盒模型content-box
  2. css动画
  3. 原型原型链
  4. new的过程
  5. 浏览器输入url到渲染的整个过程(详细讲了)
  6. DNS解析的迭代递归查询
  7. 浏览器事件循环、node事件循环(node不大了解没答好)
  8. 最长前缀匹配(自己好蠢这题做了十几分钟,n2被自己写成n3,简单题啊简单题!!)
  9. flat 手写
  10. 项目中用的 vue-router
  11. 权限验证 token
  12. defineProperty 和 proxy
  13. vue如何对数组进行监听
  14. 考察了个 getter
    Object.defineProperty(obj, 'a', { })
    if(a === 1 && a === 2 && a === 3) {
    console.log(1);
    }
    有没有办法输出 1
  15. composition API 中 setup 的是哪个生命周期
  16. Vue3 如何在页面初次渲染完毕对 dom 元素作修改

二面

自我介绍

  1. 项目,没啥特点面试官没兴趣

  2. listToTree,想用 Map 实现O(n),没做出来,面试官引导后也没做出来
    后来说要不让我重写一下 O(n2),思路太乱了没写对

  3. 问了下平常学习印象深刻的地方和面试官说说,说了看 vue 源码,讲了一下响应式

反问

还是自己太菜了,第二题挺基础的题也没答好

补一下第二题代码:
// O(n2)

function listToTree (list) {
  const tree = [];
  for (let node of list) {
    if (node.pid) {
      for (let i = 0; i < list.length; i++) {
        if (list[i].id === node.pid) {
          if (!list[i].child) {
            list[i].child = [node]
          } else {
            // 实则是利用了引用类型的特性
            // 当 push 到这个数组中时
            // tree中相应的引用也会发生改变,因为指向的是同一个地址
            list[i].child.push(node);
          }
        }
      }
    } else {
      tree.push(node);
    }
  }
  return tree;
}

// O(n)
面试后复盘写的,有问题可以提出讨论

function listToTree (list) {
  const tree = [];
  const hash = new Map(); // hash 中应该存放子节点数组
  for (let i = 0; i < list.length; i++) {
    const node = list[i];
    if (node.pid) {  // 如果这是个子节点
      if (hash.has(node.pid)) {
        // 该父节点存在子节点数组
        // 1.有可能是子节点添加的,这种情况父节点上并没有相应的引用,所以加入到 hash 中临时的子节点数组中
        // 2.也有可能是父节点自己添加的,这种情况父节点上有相应的引用,所以 push 到 hash 中相当于 push 到父节点的 child 中
        hash.get(node.pid).push(node);
      } else {
        // 该子节点的父节点不存在子节点数组
        // 初始化父节点的子节点数组
        hash.set(node.pid, [node]);
      }
    } else {  // 这是个根节点
      tree.push(node);  // 根节点直接推入就行了
    }
    if (hash.has(node.id))  // 先前已经遍历到了我的子节点
      node.child = hash.get(node.id);
    else {                // 先前没有遍历到我的子节点
      node.child = [];    // 记住,保留引用关系很重要
      hash.set(node.id, node.child);  // 这里保存的是一个引用关系需要重视
    }
  }
  return tree;
}
#快手暑期实习##面经##快手#
全部评论
楼主大几呀
点赞 回复 分享
发布于 2022-06-10 16:08
楼主对网易互联网暑期实习感兴趣吗?技术岗和人工智能岗紧缺!安卓开发和IOS开发通过内推可免简历筛选,直通笔试!其他技术岗和人工智能岗也机会多多~有兴趣的话可以私戳我内推哦~
点赞 回复 分享
发布于 2022-03-22 20:07
太顶了,太需要了。
点赞 回复 分享
发布于 2022-03-18 21:06

相关推荐

2025-11-04 21:22
天津理工大学 Java
Tom哥981:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
评论
5
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务