专有钉钉前端暑期实习之旅

602 阅读8分钟

作者介绍

重诺,专有钉钉前端团队实习生,实习期间负责专有钉钉 DING 模块 PC 及移动端的开发与维护。

前言

本文主要给大家带来从面试到入职到实习结束的真实体验,也顺带给大家提供一些面试的技巧,希望对正在求职或者正在犹豫的同学有所帮助。如果你想要了解更多关于我们团队的情况或者面试信息,可以询问子弈

why前端

作为一个非科班前端练习生,本科和硕士全是通信专业(课程偏硬件方向),但非常巧合的是,我做过的几个科研项目都需要前端技术的支持来展示结果,这也让我意识到前端的重要性。在我的理解中,相比其他领域而言,前端是最直面人心、最能影响客户体验的(也许这就是为什么我们也叫体验技术部吧),对开发者来说,我觉得前端也是最能直观感受到代码魅力(Bug)的 ,我至今还记得当年学会按出 F12 Console 的神奇体验。

带着对前端的热爱,从手撸 HTML/CSS/JS 到学习各种框架,在科研项目中凭借一手简洁而不失优雅的数据可视化,也是获得了导师和师兄的认可,更加坚定了我踏上前端这条路。

面试准备

作为一个练习时长还不到两年半的非科班前端练习生,也是一路摸爬滚打过来。想起研一刚放暑假的时候准备寻找第一段实习,面试被拒了几次,开始怀疑自己是不是不适合入这一行,不过我也意识到自己在数据结构、操作系统和计算机网络等基础知识方面的欠缺,于是痛下决心花一个暑假恶补,终于在9月拿到一家外企的 Offer。

image.png

废话不多说,马上来到本文的主角:专有钉钉。今年阿里的暑期实习招聘在3月初就开始了,而我寒假快结束了才开始做简历刷题看公司。这里放一个子弈师兄的专有钉钉前端面试指南,帮助同学们轻松应对各种面试,当然实际面试并不会问的这么广,大多是抛出一个点,由面试者自由发挥噢。

面试过程

某直聘软件上,虽然每天都有十来个人在向我要简历,但没有一个像缘一师兄一样,如此迅速发起面试邀约,短短几天就通过了二面。整个流程非常迅速,除了最后在 HR 那边卡了一会(但没有完全卡)。

下面我就来透露一些面试真题啦~

面试题

  1. Vue 有哪些特性,是如何实现的?
  2. JavaScript 如何实现多线程?
  3. JavaScript 处理异步有哪些方法?
  4. 大文件上传的解决方案?
  5. 介绍一下跨站攻击和防御的方法?
  6. 进程和线程的区别?
  7. TypeScript 相比 JavaScript 的优势?
  8. Webpack 有哪些你常用的配置项?

笔试题

  1. 使用递归和非递归方式将树形结构 data 转化成扁平数据
  2. 找到树形结构 data 嵌套的最大深度
// 举个栗子
const data = [
    {
        "name": "1",
        "children": [
            {
                "name": "1.1"
            },
            {
                "name": "1.2",
                "children": [
                    {
                        "name": "1.2.1",
                        "children": [
                            {
                                "name": "1.2.1.1",
                                "children": [
                                    {
                                        "name": "1.2.1.1.1",
                                        "children": []
                                    }
                                ]
                            },
                            {
                                "name": "1.2.1.2",
                                "children": [
                                    {
                                        "name": "1.2.1.2.1"
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            {
                "name": "1.3",
                "children": null
            }
        ]
    }
]
  1. 给定任意字符串,和任意关键字,返回可被识别的数据结构

    Function: transformText( text : string , queryString : string[] )

    Input: ( '这个就是查询条件' , [ '查询', '这'] )

    Output: [[true, '这'], [false, '个就是'], [true, '查询'], [false, '条件']]

入职体验

时间安排

因为导师那边项目催得紧,虽然4月就拿到了offer,却只能等到比较空的6月初偷偷出来实习,每周还得抽一天回去开组会。两边都来活的时候确实压力会比较大,还好公司这边请假还是很容易的。

还是挺羡慕那些全职来实习的同学,工资到手多💰还不会在业务上脱节。

身边也有实习到一半就离职回实验室的同学,毕竟临近毕业还是要以学业为重;也有转正答辩完每周来两天的同学,工作时间还是相当自由的。

公司福利

像我这么勤俭朴素(喜欢薅羊毛)的年轻人,公司的福利怎么能不白嫖呢。以下就说说一些我实际薅到的福利吧(每个部门可能会有差异,当然还有很多隐藏福利等待大家探索)

  1. 入职免费体检。【体检项目还是挺全的,还有彩超】

  2. 每天20元午餐补助(和工资一起发放),20元晚餐补助和10元夜宵补助(直接发在工牌上)。【自从实习之后,我寝室已经堆满了白嫖的牛奶】

image.png

  1. 每天21点以后免费打车。【拿了夜宵再打车,生活属实很快乐】

  2. 周末食堂免费吃饭。【住的近那还是要蹭一蹭的】

  3. 公司免费云打印。【要是毕业论文在这打印,能省不少钱】

  4. 团队outing、聚餐、下午茶等。【一不小心没蹭到outing,血亏】

  5. 免费冰激凌吃到爽。【可爱多、巧乐兹yyds】

  6. 中秋月饼礼盒。【拿回家有排面】

新人适应

刚来的几天我确实有点难以适应,首先就是团队使用 Mac 开发,而我之前还没有接触过,领了个高配16寸 MacBook Pro 对着屏幕一脸懵逼, 还好团队有非常详细的新人文档,按照上面的就可以很轻松地把环境搭好,也会推荐一些非常实用的小工具。熟悉 MAC 开发之后,啊!真香~,等有钱了我也要买...

没过两天师兄又帮我搞来一台大屏显示器,这开发体验直接拉满。

团队的技术栈是统一的 TypeScript + React,虽然自己之前还没用 React 写过项目,但接手师兄的项目,体验还是非常不错的,果然规范的代码理解起来容易多了,不像我之前实习写的,估计现在自己都看不懂了。

当然刚入门少不了有一些比较憨憨的问题,师兄不管有多忙,都很耐心地解答了,有些技术上的问题可以自己先探索,业务上的问题最好多问问啦。

实习收获

业务方面

专有钉钉产品差不多一个月进行一次迭代,在我实习近三个月的过程中,有幸作为模块项目负责人,和师兄一起做了两个迭代。

第一个迭代我做得还是挺手忙脚乱的,需求评审和 TC 评审刚好因为我的请假错过了,导致遗漏了一小部分需求;而且移动端进行了重构,加上和端上的初次磨合也还不够默契,导致了提测的延期,最惨的时候一天就接了7个 Bug。当时一度很慌,想到自己刚来就闯祸岂不是马上要收拾铺盖走人了,不过还好,有师兄帮我兜底解 Bug,总算是赶在转交付之前顺利解完。

img

第二个迭代就得心应手多了,不论是自己写代码的质量,和端上的配合,还是对业务的理解都有了全面的提升,做起需求来游刃有余,正常提测 Bug 也少了许多。

技术方面

说实话在短短的实习时间内,要做到在技术方面有所贡献还是挺难的,自己在技术方面确实还比较薄弱,而师兄们的代码也是比较完善了。

师兄给我的命题是性能优化方向的,主要是代码分割和分包技术,虽然 React 和 Webpack 原生支持这两个能力,但要在项目中玩的有模有样,还是要经历一番探索的。比如 splitChunks 是默认以 async 的方式生效的,所以使用动态引入的代码会自动生成 chunk 包,更细粒度的分包需要靠 cacheGroups 进行配置。

团队方面

每天吃完饭都是我们团队的散步闲聊时间,刚来的时候挺感慨,明明大家也没比我大几岁,却已经在人生的不同阶段了,师兄们讨论的买车买房结婚这些话题,想想很快也会变成我要经历的了,可谓听师兄一席话,胜写十年代码。

期间还和师兄们组成了王者前端小分队,每天打两把排位练习阵容,最后轻轻松松在专有钉钉王者荣耀比赛中拿下第二名,人手一个王者公仔,简直绝绝子。

微信图片_20210824224157.jpg

除此之外团队对技术的探索也是非常犀利,大家经常可以分享自己对技术的见解,当然也会被挑战,在反复的碰撞中,丰富大家的见识,留下真正好的东西。

结语

80天的实习生活,有开心也有焦虑,有收获也有压力,非常感谢我的师兄们和主管,还有一起工作的产品设计开发测试们,给了我很多鼓励和帮助,教会我如何在业务中独当一面,教会我如何变得更好。

最后也希望自己能顺利转正,也祝所有还在求职的同学能够拿到心仪的 offer,祝所有已经工作的同学事业进步生活美满,大家冲鸭!