阿里云开放平台前端一面 3.18(谢谢云宝的第一个offer虽然我最后没去)
拷打2h20min+,总体面试氛围很松弛但面的很活,有点慢刀子割肉的感觉,不过阿里云yyds,给我过了,而且也是很好很好的mentor和leader,最后知道我在犹豫和拒offer都挽留我了,没去确实感觉挺可惜的,希望好mt和好ld能工作一切顺利,respect
面试体验两场+hr面都是特别好的一集
上来之后面试官先主动介绍了业务(以PC端的管控台和控制台为主)现在听起来觉得介绍的可以说是很详细了,但是当时懵懵的哈哈哈
自我介绍后把我简历翻出来看了一下学历 说没问题(云卡学历实锤了)
问了实习的计划 预期时间和base地
开始聊经历
先聊实习经历(实习主要做什么业务)
在这个过程中遇到了哪些关键问题和挑战(记录自用,大家可以不看:pzhbd,md)
问了用到的埋点的sdk的原理()
问了数据自动采集的原理,是在元素上打了什么标签吗
比如class这种,但他说class是和css耦合的,如果css增加了同名的是不是会有影响(我说了公司的css的命名规范相关)
有没有什么方法可以实现元素的标记但不使用class?(埋点的目的就是标识元素)
html还有什么元素可以用于自定义数据的属性?
提示我了,html的data属性,问我了不了解
如何设计一个自动化埋点平台,分解一下问题,分为哪几个步骤
自动化采集过程中,我们要取得元素特征,我们会如何去取得元素特征(提到了attribute的方案做属性标记,路由的监听是监控进入和离开时间用时间差的方式)
(1)埋点,要埋哪些元素以及埋点的方式,给元素挂特征
(2)做全局事件代理
(3)页面访问的埋点可以用监听路由的方式
(4)可以做页面停留时长的监测
如果想要根据一个元素的特征去获取元素,用什么样的domAPI
getelementByclass拿到的是数组还是元素,所以是数组吗
类数组是什么呢?该如何理解这个东西
页面访问监听路由,打算如何监听路由?(说了定时器)说不是这个意思,是问的该用什么方式(比如怎么知道进入页面了)
如果是SPA怎么用?说了用全局路由守卫比如beforeEnter,问我这是浏览器原生的方法吗?
你了解vue-router是怎么去做路由的劫持和处理的吗
用原始JS做单页路由会怎么做呢?(浏览器会提供什么api让我操作浏览器的前进和后退,forward那种?)
-----------
问项目
为什么要做自己的这两个项目
详细问了开源项目的细节
container组件是啥能介绍下么
问了message和messagebox两个组件,让我介绍一下
问了弹出框弹出位置是怎么设置的,以及能不能在弹出框的中间再插入其他的message组件
问了Form组件实现的方法
问了表单的验证器是挂载在哪一层的(item层)
业务是怎么考虑的 怎么记录画布上设计器的结果的?和最终交付的低代码的业务结构是怎么关联起来的?
如果组件特别多,需要逐个遍历然后绘制,组件和组件之间低代码会有一些关系(归属关系、状态关联关系)这种关系如何记录呢?(没有定义虚拟图层)
如果让你自己实现一个响应式,你会怎么实现(如何实现对一个状态的跟踪?纯JS)
如何处理immutable?(我当时没学react 不知道immutable是啥玩意 阿巴阿巴)
感觉没理解他想问啥(然后他跳过了这个问题,)
状态是个状态,状态是个容器,状态的值可能是特定的一个对象
我创建一个状态,这个状态在整个框架的全生命周期里都是能保持住的,我知道有一个什么东西叫xxx状态,但在某一次渲染时他究竟是什么值可能是对象A也可能是对象A中某个值变了
然后想问vue响应式实现的好处和优点,想了想觉得是八股,就没问我
问我CSS写的多吗
如果想实现messagebox组件稳定在页面最顶层,通常应该怎么做呢
如果3个messagebox都写成同样的z-index会发生什么事情?是和创建的执行顺序有关么?还是别的?
如果我调三次API三次都是异步函数,这样也很难确定哪个在前面,这种情况怎么处理?有没有这样的实现方式?虽然是异步触发但是还是有一些固定的顺序?这样的场景下是如何实现成固定顺序的?
显示的层级是和API调用顺序有关吗?如果不是的话和什么有关呢(猜的是执行完后进回调队列的顺序)接着他又问和dom树有关系吗?
想实现的效果是无论怎么设置index值,组件都是在最上层,这个应该怎么实现?(他还是说可以往dom树方向考虑下 但我没思路 阿巴阿巴)
如何让对话框在屏幕的中间?(答水平垂直居中 开始背八股)
如果要定位做呢?(假如这块区域只有屏幕的一半,想在这个区域的中间)(目前也还是没有特别好的思路)
现在有个对话框,想点对话框外面把这个对话框关掉,该怎么实现呢?
我提了一个onClick监听点击事件的方案,但他说这样会挂载很多监听事件
他认为点击关闭这个事件应该和对话框组件本身绑定,而不是和组件外部的父组件绑定,因为这样会产生很多副作用
这样如何判断点击是发生在对话框以外的(说是监听鼠标点击的位置?)
接着问怎么获取当前对话框的位置
有无dom的API能直接计算某个元素的外框
如果对话框不是放的,是异型的对话框,那这种情况如何处理呢?
他提示问我对话框点击事件是怎么传播的?事件绑定在对话框上,通过事件来判断,绑在对话框上的事件,点外部能触发吗?
现在要给一个同学介绍HTTP协议,你会给他介绍HTTP协议的哪些重要内容,必须马上了解的那种
(回答请求和响应长什么样子、HTTP请求发出和最终响应的过程、响应报文码、HTTP的请求有哪些类型)
浏览器的mix-content错误,一般的原因可能是什么
如何排查SSL层的错误
代码题
1. 绘制一个按钮,等待用户点击按钮,这个按钮的事件回调函数里会生成一个随机值
收到用户输入的点击后,执行一些计算逻辑:随机值大于 0.5,就判定为 true、否则 false
根据计算结果,决定返回当前函数
2.全排列