蚂蚁前端暑期实习一面(电话)

蚂蚁面试官问问题的角度好刁钻,而且语速很快很快,一不注意就会被他带跑了。不过仔细复盘之后觉得他问的问题都挺有价值的,在这里记录一下。

虚拟DOM到底是如何提升性能的?(问的很详细,最好能列举出真实DOM,虚拟DOM的操作行为例子)

  1. 减少重绘回流次数

比如向一个<ui>列表添加5个<li>,如果直接操作真实DOM,那么浏览器需要经历5次回流;

但使用虚拟DOM在更新完后再异步批量更新真实DOM,一次性插入5个,浏览器只需要经历一次回流。

2.diff算法可以尝试对DOM进行复用,可以减少一些可能的DOM操作

虚拟DOM未必一定能提升性能,需要分情况讨论:

  • 小量数据更新: 当页面的渲染数据高达几万条,但只需要修改某一条数据时,Virtual DOM的Diff比对算法,能够避免不必要的DOM操作,节省开销
  • 大量数据更新: 当页面的渲染数据高达几万条, 但是更新的数据却非常大,甚至全量更新,Virtual DOM无法进行优化, 加剧了性能的浪费
  • 给一个二维平面点坐标的集合,如(2,3)(4,5),将这些点依次按顺序连线,判断最后连成的图形是否是一个三角形

    我的思路:

    1. 判断第一个点和最后一个点是否相同,若不同则直接返回false(首尾不相连)。
    2. 维护一组直线方程参数ABC,分别对应Ax+By+C=0。遍历点集,根据当前点和下一个点计算一组ABC并和之前的ABC比较是否全等,若全等则代表当前点和前后两个点共线,否则代表当前点是一个拐点,同时将ABC更新为新计算出的ABC。
    3. 遍历完成后检查是否一共恰好有3组不同的ABC(分别代表三角形的三条边的直线方程参数),若是则返回true,否则返回false

    面试官说思路可以,但实操起来不太可行,但我自己琢磨也不是很难实现啊...

    关于上面的问题,欢迎各位在评论区多多指教~

    全部评论
    楼主什么部门,是网商银行嘛
    2 回复 分享
    发布于 2023-03-19 10:01 四川
    楼主,一面面完有约补手写题环节嘛?
    1 回复 分享
    发布于 2023-03-20 12:47 四川
    只要不共线三个点就一定是三角形,那比较21,31的斜率就可以了。如果相等返回false
    1 回复 分享
    发布于 2023-03-20 10:55 美国
    俺今天也面了蚂蚁差不多面了一个小时,两道算法题,感觉要凉了
    点赞 回复 分享
    发布于 2023-03-28 16:43 北京
    楼主面试前有要做行测么
    点赞 回复 分享
    发布于 2023-03-27 11:16 上海
    蹲个后续
    点赞 回复 分享
    发布于 2023-03-26 20:32 北京
    同学你后来约2面了吗
    点赞 回复 分享
    发布于 2023-03-22 16:07 北京
    楼主面了多久
    点赞 回复 分享
    发布于 2023-03-21 21:51 湖南
    楼主二面没有
    点赞 回复 分享
    发布于 2023-03-21 12:08 四川
    暑期实习这么快都开始了吗
    点赞 回复 分享
    发布于 2023-03-20 16:24 黑龙江
    同学是组内提前面,还是系统上已经过了简历筛选然后开始面试了?
    点赞 回复 分享
    发布于 2023-03-19 13:39 广东
    可以判断拐了两次弯,只要每次的斜率和上次不一样就加一
    点赞 回复 分享
    发布于 2023-03-19 08:29 山东

    相关推荐

    评论
    18
    63
    分享

    创作者周榜

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