阿里巴巴前端暑期实习——无语八面挂

部门一 蚂蚁集团-数字金融线-保险体验技术部

2月底就走内推了,3月初面完技术面,技术面走完后,卡了我最黄金的两周多时间,到3月14号后面由内推人告知无hc了,

一面

  1. 笔试5选4
/**
  * 第一题
  * 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。
  * 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。
  * 可以不考虑输出结果的顺序。
  *
  * 输入:nums1 = [1,2,2,1], nums2 = [2,2]
  * 输出:[2,2]
  *
  * 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  * 输出:[4,9]
  */
/**
 * 第二题
 * 已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
 * 编写一个函数将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
 */
/**
 * 第三题
 * 以下数据结构中,id 代表部门编号,name 是部门名称,parentId 是父部门编号,为 0 代表一级部门,
 * 现在要求实现一个 convert 方法,把原始 list 转换成树形结构,parentId 为多少就挂载在该 id 的属性 children 数组下,结构如下:
 * 原始 list 如下
    let list =[
        {id:1,name:'部门A',parentId:0},
        {id:2,name:'部门B',parentId:0},
        {id:3,name:'部门C',parentId:1},
        {id:4,name:'部门D',parentId:1},
        {id:5,name:'部门E',parentId:2},
        {id:6,name:'部门F',parentId:3},
        {id:7,name:'部门G',parentId:2},
        {id:8,name:'部门H',parentId:4}
    ];
    转换后的结果如下
    let result = [
        {
          id: 1,
          name: '部门A',
          parentId: 0,
          children: [
            {
              id: 3,
              name: '部门C',
              parentId: 1,
              children: [
                {
                  id: 6,
                  name: '部门F',
                  parentId: 3
                }, {
                  id: 16,
                  name: '部门L',
                  parentId: 3
                }
              ]
            },
            {
              id: 4,
              name: '部门D',
              parentId: 1,
              children: [
                {
                  id: 8,
                  name: '部门H',
                  parentId: 4
                }
              ]
            }
          ]
        },
      ···
    ];
 */
/**
 * 第四题
 * 实现一个 EventEmitter 类,支持事件的订阅、取消订阅以及发送功能
 */
/**
 * 第五题 
 * 设计 LazyMan 类,实现以下功能
 * LazyMan('Tony');
 * // Hi I am Tony
 * 
 * LazyMan('Tony').sleep(10).eat('lunch');
 * // Hi I am Tony
 * // 等待了10秒...
 * // I am eating lunch
 *
 * LazyMan('Tony').eat('lunch').sleep(10).eat('dinner');
 * // Hi I am Tony
 * // I am eating lunch
 * // 等待了10秒...
 * // I am eating diner
 * 
 * LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(10).eat('junk food');
 * // Hi I am Tony
 * // 等待了5秒...
 * // I am eating lunch
 * // I am eating dinner
 * // 等待了10秒...
 * // I am eating junk food
 */
  1. 最了解的计算机网络模块 http、tcp之类的
  2. https和http的区别
  3. 了解哪些请求方法
  4. get和post区别
  5. 你对html、css、js掌握程度分别打几分
  6. html5新特性
  7. 实习项目的亮点
  8. vue的原理了解哪些 数据绑定、虚拟dom、diff算法

二面

  1. 问了学校的情况
  2. 什么时候开始学前端的
  3. 把简历上的项目都介绍一下吧
  4. 介绍一下实习的项目
  5. 问了一下简历上建模比赛的情况

大淘宝-营销研究 (阿里妈妈)

3轮技术面走完后,被排序,无hc挂

评估面

  1. 自我介绍
  2. 介绍实习经历
  3. vue是怎么去识别v-if、v-bind这些指令的
    vue通过AST将html结构抽象成语法树,也就是虚拟dom,判断对象树上的属性,可以写一些正则去匹配v-开头的这些指令
  4. 怎么去获取dom树的所有结点 domApi? 通过document.queryselector去获取节点 然后调用节点下的children或childrenNodes属性?
  5. 聊回实习经历

// ps: 觉得这个面试官有些....

一面

笔试题

  1. str = ‘AAAAAAAABBAAAAAAAA’ 实现一个方法 findRes(str, n) 从str里找出现次数大于1 且长度为n的子串

    结果: [AAAAAAAA]

  2. -章节一
    -标题一
    -标题二
    -标题三
    -子标题一
    -章节二
    -标题一
    -标题二 给一个这样的字符串,写parseTree方法形成树结构

   // 没缩进两个字符代表一级目录
   const text = `
   -章节一
     -标题一
     -标题二
     -标题三
       -子标题一
   -章节二
     -标题一
     -标题二`
   class Node {
       constructor({value, level}) {
           this.value = value;
           this.level = level;
           this.childrens = [];
       }
   }
   const parseTree = (text) => {
       // TODO
   }
   console.log(parseTree(text))
   // [{value: '标题一', childres:[Node, Node], level: 1}, {value: ‘标题二’, childrens:[Node, Node],level:1}]

​ res=[{value: '标题一', childres:[Node, Node], level: 1}, {value: ‘标题二’, childrens:[Node, Node],level:1}]

面试题:

自我介绍

问一个实习简历感兴趣点 不了解

数组和链表的区别 增删改查

两道题

  1. 大数相乘

  2. /*
    
    const map = [
      [0, 1, 1, 0, 0, 0, 0, 0],
      [0, 0, 1, 0, 0, 0, 0, 0],
      [0, 0, 1, 1, 1, 1, 0, 0],
      [0, 0, 1, 0, 0, 0, 1, 0],
      [0, 0, 1, 0, 1, 0, 1, 0],
      [0, 0, 0, 1, 2, 0, 0, 0],
      [1, 1, 1, 1, 1, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0]
    ]
    
    地图中 '0' 为可移动区域  '1' 为不可移动区域, '2'为目标区域
    从0,0坐标开始,可以上下左右移动,给出一条走到目标的路径
    */

二面

  1. 自我介绍
  2. 介绍目前的项目
  3. 介绍实习经历
  4. vue有什么特点
  5. 数据双向绑定,dom怎么驱动数据??// 面试官举了个例子,用户改变input的值后是怎么去改变vue中的data的
  6. http和https
  7. https是怎么保证安全的
  8. 输入url到页面渲染的过程
  9. http和tcp的关系?
  10. css是怎么渲染div到页面上的
  11. css加载会阻断html解析吗?js呢?
  12. async和defer的区别?
  13. 你觉得bilibili的蒙版弹幕是怎么实现的
  14. 你觉得最有成就感的一件事
  15. 你觉得前端领域你哪一块比较优秀?

阿里云云原生应用平台

在这个部门遇到平生最无语的事,面试官是在牛客联系我的,当时我的流程在支付宝,然后也答应了和面试官私底下面试,技术面走完后,面试官对我比较意向,已经预留hc给我,只等我流程转部门后安排hr面;在4.7早上,终于把流程转到阿里云云原生应用平台了,我及时通知了这位哥,然后哥也说马上会处理,但是到4.7下午,我一看流程就被结束了,(第一次简历挂??)但或许据说有阿里锁hc的缘故吧,但hr是在没有和技术团队打招呼的前提下直接把我挂了,搞得我和那位大哥都一脸懵逼,那位大哥也觉得hr的操作很不好,但是由于阿里的招聘规则,流程结束后,无法再捞回。

一面 不到1小时

一二面 面试官一起来轮流开火的 应该算一二面同时

  1. 自我介绍
  2. 介绍实习的项目
  3. 针对实习项目提出亮点 面试官反问...
  4. 首屏优化有哪些方法
  5. http1.1 http2.0 http3 区别
  6. TCP和UDP区别
  7. 什么是JWT
  8. 场景:一个人正在使用网站,突然被强制下线 可能是什么问题?
    答:cookie大小限制?字段限制?

二面 leader面

  1. 自我介绍
  2. 针对这么多项目 挑一个比较想讲的项目
  3. 针对项目反问
  4. 生活上处理困难的事例
  5. 反问

总结

今年在阿里的整个流程非常水逆,不是被排序,就是被这种古怪hr搞成这样,本人自认为自己的面试过程都是没问题的,每一个部门的技术面都走完了,且走的不错,但就是没法进到阿里。
面了这么多,说实话挺累了 ... 不想再面了 只能去别的公司了

#前端开发实习生##春招##实习##面经##阿里巴巴##前端#
全部评论
楼主加油,别放弃!
2 回复 分享
发布于 2022-04-09 13:29
兄弟,你和我一样,我已经无语了
1 回复 分享
发布于 2022-04-14 11:02
太无语了😢
点赞 回复 分享
发布于 2022-04-08 18:19
阿里妈妈 我和你做了一样的笔试题
点赞 回复 分享
发布于 2022-04-09 13:08
楼主近况怎么样?
点赞 回复 分享
发布于 2023-03-16 16:53 山东

相关推荐

什么时候才能有offer啊_:十年前我还在刺激战场研究跳伞的底层原理呢
投递牛客等公司
点赞 评论 收藏
分享
评论
6
29
分享

创作者周榜

更多
牛客网
牛客企业服务