热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端面经系列(二)

2015阿里巴巴校园招聘前端笔经面经发布于2014-09-2616:40:01|976次阅读|评论:4|来源:网友投递本文是一个网友参加2015年阿里巴巴校园招聘前端工程师的面试笔

发布于 2014-09-26 16:40:01 | 976 次阅读 | 评论: 4 | 来源: 网友投递

本文是一个网友参加2015年阿里巴巴校园招聘前端工程师的面试笔试经历,包括面试题,参考答案和注意事项等,感兴趣的同学参考下。

本文是一个网友参加2015年阿里巴巴校园招聘前端工程师的面试笔试经历,包括面试题,参考答案和注意事项等,感兴趣的同学参考下。

阿里巴巴19号在美国上市,已经成为中国第一,全国第二的互联网公司,市值2300多亿美元,感觉在这个非常时刻能拿到阿里巴巴的offer,真的是一件很令人高兴的事情。下面谈谈阿里巴巴招聘流程和阿里巴巴前端面经。

    今年阿里的招聘真早啊,8月初的时候就开始了提前批(也称作内推)。当时由于还在爱立信实习,就没去走这趟浑水了。网申8月24号截止,我的简历还是24号中午投的呢,现在想想,真是好惊险啊,差点就和阿里巴巴错过了。

    下面描述一下阿里巴巴前端的校招流程,当然你也可以去官网看(http://www.job.alipay.com/)。阿里巴巴果然是与众不同,没有繁 琐的宣讲会,或许是名气太大了,不需要宣讲吧。所有职位都采用在线笔试。笔试通过之后,需要进行在线预约才能接着参加面试。技术类的面试有3轮,第一轮和 第二轮都是技术面,第三轮有两种情况,普通的是HR面(13k*15),如果一、二轮表现好的是交叉面(这种情况就是传说中的15k*15啦)。

    8月25号参加了在线笔试,前端一共12个题目,考察的范围还是相当广泛的,分为以下:

    1,Html5(包括媒体查询,CSS3里面的旋转变换啦)

    2,前端安全

    3,git命令和github账号(https://github.com/liufeng-cheng)

    4,用户体验和性能优化

    5,编程能力的考察(当然更希望你能把面向对象和设计模式考虑进去)

    笔试一共60分钟,需要编程的题目大概有5题吧,代码量其实不是太大,30~100行左右。就是让你实现一些功能,比如对URL的解析,写个弹窗效果,设 计一组API等等。这里面当然你需要对闭包、作用域、原型等Javascript高级知识点有深入的了解。笔试很能够区分水平的,很多研究生都会被无情的 刷掉。

    这里面我想谈几点:

    1, 不要依赖jQuery, Ext, YUI等等Javascript库,平时写写玩具的时候尽量使用原生Javascript或者原生ajax,这样你会对很多原理和底层的知识有所了解。

    2, 前端很庞大,不是简单的html,css,Javascript的混合体,你需要广阔的技术视野,关注并了解新技术并且尝试运用。

    3, 平时写代码的时候尝试去优化他,你可以测试代码的性能(YSlow和jsperf.com都行)。

    4, 写代码要用到模块化的思想,你可以阅读以下AMD规范,浏览器端的Javascript最好去遵循这个规范,常见的requirejs已经采用了AMD规范

    5, 要让面向对象和设计模式为你的Javascript code所用。

    9月2号,当时看到我的个人状态变成了”待面试“,那个时候,真的很高兴,因为身边很多人都被刷掉了,包括大把大把的研究生。有时想想,现实就是这么残 酷,有人通过,就有人铩羽。我预约到了9月12号,地点是武汉纽宾凯鲁广国际酒店,是一家五星级的酒店。阿里巴巴的财大气粗的形象瞬间跃然纸上,别的公司 都是在学校里面搞笔试面试,它在5星级的酒店里。可能阿里面对的不是一个学校的学生,而是整个武汉,甚至是华中地区的学生吧,这样做会让面试流程更加规范 吧。当然,也有部分是为了公司的宣传。

         

     笔试通过之后,这10天我并没有闲着,我开始复习前端,这个庞然大物。要复习的知识真的是太多太多,概念也完全无法穷尽。从基础知识到高级知识,然后是 项目经验,实习经验的总结,以前编写的代码的总结,开源框架jQuery,EXT, YUI源码的复习,nodejs,Html5,前端开发工具,性能优化。我觉得10天确实太过于短暂。

     时间真快,9月12号那天下午,我带上简历,武汉理工大学经纬网聘书,爱立信实习证明,黑客马拉松一等奖证书,信心满满的奔向了人生的第二场面试。

     3楼大堂的人真多啊,小数一下,也有四,五百人吧,人流络绎不绝。有从湖南那边赶过来的,有来霸面的,早该猜到了,有无数个人想进阿里。当然招聘5个 人,面试官可能会面50个或者100个,真是千挑万选啊。当时我就在想,面试的时候给面试官留下深刻的印象是多么重要啊。下面直奔3轮面试了。

    一面是纯技术面,所有的问题都是技术问题,问题问的很深,但是同样考察到了基础的掌握。刚刚见到面试官的时候,我递上了我准备的其它材料。然后面试官让我 谈项目经历,然后我说了之前参加黑客马拉松时候的一个项目,采用google angularjs、cordova和爱立信LTE broadcast部门提供的高通API去实现一个基于 android平台的app,后台使用nodejs实现的http server和backbone.js。数据库采用android平台 下自带的sqlite3。实现了RSS订阅功能,数据广播和点播的功能,并且使用cordova自带的Media播放 插件实现音频文件的播放。为力求高效,我们使用了ionic。然后面试官问为什么选择angular? angular相比其它前端框架的优势?然后面试官准备了一些问题,如下:

                                                 

    1, 写一个正则表达式,规则我忘了,反正挺长的(需要现场写code)

    2, 前端安全(XSS,sql注入,CSRF)。问有没有那些攻击别人站点的经历,然后问CSRF的原理,一些html code如果要显示在页面上,怎么处理,当然是通过编码解码啦,哈哈。

    3, 兼容性问题

          ie6下的奇葩太多了,浮动双边距,上下margin,微高,png兼容,然后问我引入脚本处理png图片的原理。。。

    4, 输入url到页面出现的过程

         包括DNS解析,TCP连接,HTTP GET获取数据,加载DOM树,渲染树,然后问了下哪些地方会出现css阻塞,哪些地方出现js阻塞。ie各版本和chrome可以并行下载多少个资源。

    5, 跨域请求及实现的原理

         比如jsonp,window.name, iframe,window.postMessage。jsonp的原理是动态插入script标签

    6, 问了一个算法问题,字符串匹配相关的(需要现场写code)

         先是用数组去模拟,后来讲的时候发现不行,改成了hash表

    7, Javascript里面的继承怎么实现,如何避免原型链上面的对象共享(需要现场写code)

         回答当然是经典的构造函数和原型链的混合模式去实现继承的啦,避免对象共享可以参考经典的extend()函数,很多前端框架都有封装的,就是用一个空函数当做中间变量

    8, 设计模式的一些问题

          我谈了下XHR工厂和事件委托里面的中介者模式

    9, 异步加载和延迟加载的实现。

     面完之后,面试官和我深情的握了一个手,看的出来,他对我的表现非常满意。

     出去等了一会儿,用手机刷新了一下官网状态,发现一面通过。等了10分钟之后,接着参加二面。

     二面的问题感觉让我很尴尬,部分技术问题,部分团队,项目问题。大概是下面这些:

     1,你是学软件工程的,为什么搞前端?

     2,看了你的简历,项目经历这么丰富,你说说你从这么多项目中,学到了什么?

     3,项目中和他人有所分歧的时候,怎么办?

     4,你当初为什么考虑引入angular?而不是其他框架?

     5,html5开发的一些经验和问题(作为前端达人,一般这个问题,必扯localStronge, webgl, device api)

     6, 对阿里巴巴有多少了解?

     7, 以后想去杭州还是北京啊,为什么不选择北京?

     8,以前做一个项目,如何和团队中其它的成员分工?是按板块分还是页面分

     9,如何带一个新人?

    10, 性能,如何去测试。代码层面,哪些地方可以优化性能(提到了一下重排和重绘)

    11,谈了下grunt, YUI compressor 和 google clojure用来进行代码压缩的用法。

      出去等了一会儿,通知3面。

     当时挺激动的,一般3面基本不怎么刷人的,当时觉得这次面试稳了。三面是传说中的交叉面,也就意味着一面,二面表现优秀,工资会有所提高。当然,交叉面当时我也不知道,时候听别的学长说的。

     3面HR问题:

     1, 自我介绍

     2, 实习学到了什么? 有没有拿到爱立信的offer?

     3, 为什么想要加入阿里巴巴?

     3面技术官问题:

     1, 如何实现一个缓存(还好以前用nodejs写过静态文件服务器,对缓存了解的很清楚)

     2, 追问浏览器端的缓存要不要发送HTTP请求(我当时回答,304的时候不需要,其实是错的,还是需要发送请求,只不过不需要在去下载服务器的资源了)

     3, angularjs里面的双向数据绑定和依赖注入的原理?

     面完已经6点半了,当走出酒店的那一瞬间,真的非常高兴,虽然整个面试过程我个人感觉还挺轻松,但是我觉得我已经打破了我们专业本科生好几年没有进BAT的历史了,当然以后能进一个更好的平台,于业界顶级水平的人一起工作,学到的应该会很多吧。

     我面试的感悟和建议是:

     1, 要有激情,对于新事物,新技术,要有一双善于发现的眼睛。

     2, 团队工作经验,项目经验,实习经验真的很重要,个人的眼界和知识真的太有限了,只有经常和别人交流,你才能走的更远,看的更远。

     3, 技术的深度和广度很重要。

     4, 要多思考,多总结。你要想着如何去改进已有的东西,去优化你的代码。有的时候,停住脚本真的很有意义。


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 题目 E. DeadLee:思维导图与拓扑结构的深度解析问题描述:给定 n 种食物,每种食物的数量由 wi 表示。同时,有 m 位朋友,每位朋友喜欢两种特定的食物 x 和 y。目标是通过合理分配食物,使尽可能多的朋友感到满意。本文将通过思维导图和拓扑排序的方法,对这一问题进行深入分析和求解。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在最近的项目中,我们广泛使用了Qt框架的网络库,过程中遇到了一些挑战和问题。本文旨在记录这些经验和解决方案,以便日后参考。鉴于我们的客户端GUI完全基于Qt开发,我们期望利用其强大的网络功能进行Fiddler网络数据包的捕获与分析,以提升开发效率和应用性能。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 题目要求解决一个有趣的编程挑战,即计算由四个自然数 \( p, q, r, s \) 组成的分数序列的和。具体来说,需要编写一个 C# 程序来处理这些自然数,并通过特定的数学运算得出最终结果。该任务不仅考验编程技能,还涉及对数学公式的理解和应用。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
author-avatar
大大醯_804_224
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有