作者介绍
重诺,专有钉钉前端团队实习生,实习期间负责专有钉钉 DING 模块 PC 及移动端的开发与维护。
前言
本文主要给大家带来从面试到入职到实习结束的真实体验,也顺带给大家提供一些面试的技巧,希望对正在求职或者正在犹豫的同学有所帮助。如果你想要了解更多关于我们团队的情况或者面试信息,可以询问子弈。
why前端
作为一个非科班前端练习生,本科和硕士全是通信专业(课程偏硬件方向),但非常巧合的是,我做过的几个科研项目都需要前端技术的支持来展示结果,这也让我意识到前端的重要性。在我的理解中,相比其他领域而言,前端是最直面人心、最能影响客户体验的(也许这就是为什么我们也叫体验技术部吧),对开发者来说,我觉得前端也是最能直观感受到代码魅力(Bug)的 ,我至今还记得当年学会按出 F12 Console 的神奇体验。
带着对前端的热爱,从手撸 HTML/CSS/JS 到学习各种框架,在科研项目中凭借一手简洁而不失优雅的数据可视化,也是获得了导师和师兄的认可,更加坚定了我踏上前端这条路。
面试准备
作为一个练习时长还不到两年半的非科班前端练习生,也是一路摸爬滚打过来。想起研一刚放暑假的时候准备寻找第一段实习,面试被拒了几次,开始怀疑自己是不是不适合入这一行,不过我也意识到自己在数据结构、操作系统和计算机网络等基础知识方面的欠缺,于是痛下决心花一个暑假恶补,终于在9月拿到一家外企的 Offer。
废话不多说,马上来到本文的主角:专有钉钉。今年阿里的暑期实习招聘在3月初就开始了,而我寒假快结束了才开始做简历刷题看公司。这里放一个子弈师兄的专有钉钉前端面试指南,帮助同学们轻松应对各种面试,当然实际面试并不会问的这么广,大多是抛出一个点,由面试者自由发挥噢。
面试过程
某直聘软件上,虽然每天都有十来个人在向我要简历,但没有一个像缘一师兄一样,如此迅速发起面试邀约,短短几天就通过了二面。整个流程非常迅速,除了最后在 HR 那边卡了一会(但没有完全卡)。
下面我就来透露一些面试真题啦~
面试题
- Vue 有哪些特性,是如何实现的?
- JavaScript 如何实现多线程?
- JavaScript 处理异步有哪些方法?
- 大文件上传的解决方案?
- 介绍一下跨站攻击和防御的方法?
- 进程和线程的区别?
- TypeScript 相比 JavaScript 的优势?
- Webpack 有哪些你常用的配置项?
笔试题
- 使用递归和非递归方式将树形结构 data 转化成扁平数据
- 找到树形结构 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
}
]
}
]
-
给定任意字符串,和任意关键字,返回可被识别的数据结构
Function: transformText( text : string , queryString : string[] )
Input: ( '这个就是查询条件' , [ '查询', '这'] )
Output: [[true, '这'], [false, '个就是'], [true, '查询'], [false, '条件']]
入职体验
时间安排
因为导师那边项目催得紧,虽然4月就拿到了offer,却只能等到比较空的6月初偷偷出来实习,每周还得抽一天回去开组会。两边都来活的时候确实压力会比较大,还好公司这边请假还是很容易的。
还是挺羡慕那些全职来实习的同学,工资到手多💰还不会在业务上脱节。
身边也有实习到一半就离职回实验室的同学,毕竟临近毕业还是要以学业为重;也有转正答辩完每周来两天的同学,工作时间还是相当自由的。
公司福利
像我这么勤俭朴素(喜欢薅羊毛)的年轻人,公司的福利怎么能不白嫖呢。以下就说说一些我实际薅到的福利吧(每个部门可能会有差异,当然还有很多隐藏福利等待大家探索)
-
入职免费体检。【体检项目还是挺全的,还有彩超】
-
每天20元午餐补助(和工资一起发放),20元晚餐补助和10元夜宵补助(直接发在工牌上)。【自从实习之后,我寝室已经堆满了白嫖的牛奶】
-
每天21点以后免费打车。【拿了夜宵再打车,生活属实很快乐】
-
周末食堂免费吃饭。【住的近那还是要蹭一蹭的】
-
公司免费云打印。【要是毕业论文在这打印,能省不少钱】
-
团队outing、聚餐、下午茶等。【一不小心没蹭到outing,血亏】
-
免费冰激凌吃到爽。【可爱多、巧乐兹yyds】
-
中秋月饼礼盒。【拿回家有排面】
新人适应
刚来的几天我确实有点难以适应,首先就是团队使用 Mac 开发,而我之前还没有接触过,领了个高配16寸 MacBook Pro 对着屏幕一脸懵逼, 还好团队有非常详细的新人文档,按照上面的就可以很轻松地把环境搭好,也会推荐一些非常实用的小工具。熟悉 MAC 开发之后,啊!真香~,等有钱了我也要买...
没过两天师兄又帮我搞来一台大屏显示器,这开发体验直接拉满。
团队的技术栈是统一的 TypeScript + React,虽然自己之前还没用 React 写过项目,但接手师兄的项目,体验还是非常不错的,果然规范的代码理解起来容易多了,不像我之前实习写的,估计现在自己都看不懂了。
当然刚入门少不了有一些比较憨憨的问题,师兄不管有多忙,都很耐心地解答了,有些技术上的问题可以自己先探索,业务上的问题最好多问问啦。
实习收获
业务方面
专有钉钉产品差不多一个月进行一次迭代,在我实习近三个月的过程中,有幸作为模块项目负责人,和师兄一起做了两个迭代。
第一个迭代我做得还是挺手忙脚乱的,需求评审和 TC 评审刚好因为我的请假错过了,导致遗漏了一小部分需求;而且移动端进行了重构,加上和端上的初次磨合也还不够默契,导致了提测的延期,最惨的时候一天就接了7个 Bug。当时一度很慌,想到自己刚来就闯祸岂不是马上要收拾铺盖走人了,不过还好,有师兄帮我兜底解 Bug,总算是赶在转交付之前顺利解完。
第二个迭代就得心应手多了,不论是自己写代码的质量,和端上的配合,还是对业务的理解都有了全面的提升,做起需求来游刃有余,正常提测 Bug 也少了许多。
技术方面
说实话在短短的实习时间内,要做到在技术方面有所贡献还是挺难的,自己在技术方面确实还比较薄弱,而师兄们的代码也是比较完善了。
师兄给我的命题是性能优化方向的,主要是代码分割和分包技术,虽然 React 和 Webpack 原生支持这两个能力,但要在项目中玩的有模有样,还是要经历一番探索的。比如 splitChunks 是默认以 async 的方式生效的,所以使用动态引入的代码会自动生成 chunk 包,更细粒度的分包需要靠 cacheGroups 进行配置。
团队方面
每天吃完饭都是我们团队的散步闲聊时间,刚来的时候挺感慨,明明大家也没比我大几岁,却已经在人生的不同阶段了,师兄们讨论的买车买房结婚这些话题,想想很快也会变成我要经历的了,可谓听师兄一席话,胜写十年代码。
期间还和师兄们组成了王者前端小分队,每天打两把排位练习阵容,最后轻轻松松在专有钉钉王者荣耀比赛中拿下第二名,人手一个王者公仔,简直绝绝子。
除此之外团队对技术的探索也是非常犀利,大家经常可以分享自己对技术的见解,当然也会被挑战,在反复的碰撞中,丰富大家的见识,留下真正好的东西。
结语
80天的实习生活,有开心也有焦虑,有收获也有压力,非常感谢我的师兄们和主管,还有一起工作的产品设计开发测试们,给了我很多鼓励和帮助,教会我如何在业务中独当一面,教会我如何变得更好。
最后也希望自己能顺利转正,也祝所有还在求职的同学能够拿到心仪的 offer,祝所有已经工作的同学事业进步生活美满,大家冲鸭!