阿里前端实习面试经历(凉面)

今天是4月2日,星期二。上周四投了阿里**新事业部的内推,晚上刚做完阿里素质测试,周五下午就来电话。没有一丝丝准备,我直接就来一句“这两天感冒,不太方便”。那老哥坚持了一下:“我们现在先做一下简历筛选,请问你的GitHub账号头像是辛普森一家的巴特吗?” “是的…好久没用的,最近在用Gitee…” 然后说我只有Vue的两个项目,我就以为问Vue项目细节是重点。扯了两句后就说下周再联系。

于是经过几天紧张焦灼的准备,大致把可能问到的问题,比如Vue的响应式原理、Vue的生命周期、项目的难点和优化点、计算机网络、HTTP协议、渲染过程这些写了下来。本打算今天晚上去打印,过两天打电话过来可以参考着 会舒服一点,结果19点半突然就来了电话,头脑一懵。再次拒绝也不好,不如早点结束省得记着,就空着手走到楼下漆黑的雨夜里。


 一来先是问是自学的吗,我说嗯,然后其他没多说,就直接开始了。当他说道 先问你一些HTML的知识,我就有点惊讶——原来是问基础知识。

HTML部分

第一个问题:谈谈你对语义化的理解。答:winter老师的文章提到div+span其实是够用了,也没有什么不好,比如button不一定非得用button元素,div反而可以更好地实现需要的样式和功能。不过语义化也有好处,比如有利于SEO。但能保证会用的地方还是提倡多用,比如门户网站的新闻可以使用article这些标签,增强页面语义。

然后问你觉得iframe有什么缺点。我当时想成@keyframe做动画的,不过马上反应过来红宝书提到过frameset和frame,就是使一个浏览器窗口里面分出多个独立的小窗口。我就跟他提到这个去了,问我这个有什么缺点,就说拖动分隔线时多个子窗口的宽高都会受影响,造成较多的重绘,影响性能…(完全没答到点)。

再就是问一个表单,当我提交并跳转之后,按浏览器的后退键回到表单的页面,如何使input框中的文字不保存?当时就有点奇怪,我问可以使用JS来实现吗?他说HTML的一个属性就可以做到,如果你不熟悉的话可以说你的思路。我想了一下就说使用Vue的钩子函数在返回页面被渲染时将input的内容置为空。他笑笑说这样可以,但不用这么麻烦,你回去查一下那个属性吧。

CSS部分

那我再问你一些关于CSS的知识吧,怎样让一个div在整个浏览器窗口中水平竖直居中。答:div是块级元素,默认占满一行,所以得设置好宽度,然后margin:0 auto就能水平居中。竖直居中的话,vertical-align:middle可以吗?(回:那是多个元素对齐)哦哦对,可以在它后面添加一个i标签或者伪元素···然后还有使用绝对布局,top设为50%,然后margin-top为自身高度的一半的负值。好像还有几种方式,暂时想不起来了。

嗯,你说到绝对定位,那定位有哪几种类型呢?听到这个问题还有点轻松,不过突然发现好像有点生疏了,感觉有点不妙。答:有相对定位position:relative,这个是默认属性…(你是说relative是默认值吗?)不是吗?(嗯,你说吧,我知道了)还有绝对定位position:absolute,它是脱离文档流的。还有一个fixed类型,【我把它说成sticky的表现形式了】滚动到一定程度然后就固定了。【所以static和sticky都没说出来,还把relative当成默认的去了,尴尬】

好,那我再问你,用纯CSS如何实现一个三角形呢?我又懵了,因为学css只学了些属性和选择器,只是知道CSS揭秘这本书有很多实现,但是没去学,这个最基本的形状也没去了解过。然后就只能拖延一点时间,问他是正三角形还是直角三角形,(这有什么区别吗?一般就正三角形吧)我想了十秒没说句话,他就知趣地说可能你们现在使用图片和iconfont比较多,没去关注过CSS实现一些基本图形。我只好应声附和,但是又表示自己知道CSS能够实现许多很精美的图形,暂时还没去深入学习。。【使用border】

JS部分

好吧,那再讨论一些关于JS的内容吧,你说说Null和Undefined有什么区别。答:undefined是指一个变量定义了,但是没有初始化,它是一个object,但是是JS语言的设计失误【又说错了,typeof null === “object”,这才是设计失误】,null就是指为空,可能比较抽象,我不太好表达。

JS里面有哪几种数据类型呢?答:Number、Boolean、String、Object、Undefined,好像还有两种,记不太起来了。(还有之前说的Null也是种数据类型)哦哦对。【然后第7种数据类型是ES6引入的Symbol】

然后问说说你对原型链的理解。我脑子里有那个图,但是稍微有点生疏,构造函数、prototype、__proto__、父构造函数啰里啰唆一大堆,就是组织不好语言,没有条理性,我自己都听不下去了。干脆说自己平时没有和别人讲过,临时组织语言也不好讲清楚【谁知道一面都问基础呢,不然肯定背一段了】,但我对原型链还是有那个概念的。他表示很理解我,说这个是比较抽象,然后说“那我给你提个醒,你说说继承的实现方式有哪些?” 答:原型链继承、使用构造函数、组合式继承、寄生式继承、YUI3的圣杯模式…但是并没有具体展开怎么实现的。他就说那你对这个还是有一定了解的,就没继续问下去。

最后再问你一个应用型的题,一个String数组如何去重?可恶,又是见过但是没有记住的知识。又开始拖延时间,问是否能改变原来的数组,然后还请求思考一会儿。可是当时又急又紧张,脑子一片混乱,思绪理不清,支支吾吾没说出一点思路来,就说了个ES6有一个set方法可以直接去重,(那怎么使用set方法去重呢?)我只是知道有这个方法,还没去用过…

我问的问题

“嗯,我今天的问题准备的就这些,差不多问完了,现在无法确定结果,过段时间再通知……”我看这是直接收场的意思,都没问我有什么问题,于是赶紧说我可以向您咨询一些问题吗?他还是很热情的说可以。

请问在公司里面,前端工程师会分偏前和偏后端的吗?答:我们这个部门前端大概20多人,大家都会写后端,包括Java或者Nodejs,但这种分工是有的… 

那您觉得前端工程师有没有可能工作三五年后,转型做用户体验设计师或者产品经理呢?答:我身边也是有这样的例子的,比如后端工程师转去做产品经理,你工作的时期的经历会让你对行业有一定的认识,如果想转型的话,底下去学习还是可以做到的。不过像前端,我们可能需要不断学习新的自己领域的东西,没有很多多余的时间去学比方你说的设计,那个是需要看许多书做许多练习的。如果你想做这一块,为什么不一开始就学习设计呢?(我本科专业学过多种编程语言,有过编程的经验。而且感觉技术岗的机会比设计岗更多。)

那您觉得前端偏前的方向有没有机会可以使用到自己掌握的一些设计理念呢?答;一般来说,我们分工还是比较明确,设计师给稿子,我们来实现,可能开会的时候可以讨论可行性,一般不会有前端工程师来改设计稿的情况…

面试大哥的声音听起来大概就入职两年左右的样子,态度很好,答错常识、最简单的实现都做不出来也没有变得不耐烦。后面回答我提的关于工作的问题,也是主动说了很多,最后还强调结果不确定,要我等通知。可以说是超级照顾心理了。

不过因为是第一次面试,通话过程中全程紧张,内心颤栗,大脑混沌,基本没有一个题答好,还闹出各种笑话,真的是羞愧难当。不过面试官没有表示一点点鄙夷和不耐烦,还撑到了43分钟的通话时长,给了我提供了一些关于职业发展的写实和建议,最后是真诚地感谢了他两次。打完电话感觉整个人被掏空,能量消耗过高,饿到不行。


后话:打完电话长舒一口气,压了三四天的心理负担终于卸下来,算是超脱的心境了。终于可以安心回顾以前记的基础笔记,然后再刷些算法题。虽然是次很糗的经历,不过还是收获满满,之前的准备过程补了项目相关以及一些较难的问题,这次面试又让我对基础有了足够的重视,所以每次面试经历都是很宝贵的!第二天中午,到官网一查,虽然是100%确信自己没有希望,但是看到这么果决的结果,还是有点羞耻感(ノへ ̄、) 

不管怎样,迈出第一步就是好事,接下来请更加努力!

猜你喜欢

转载自www.cnblogs.com/garmin6/p/10645737.html