写在前面: 2015 年 7 月初。參加阿里巴巴校招内推, 8 月 15 日拿到研发project师 JAVA 的 offer 。我的专业并不是计算机,也没有在互联网公司实习过,仅仅有一些学习和面试心得,供大家參考。阿里巴巴 90% 以上使用 Java ,所以以下的分享也基于 Java 岗,如有表达不准确的地方。请提出建议和指正。

7 月上旬投递简历, 7 月 27 号至 29 号连续三天,每天一面,在 8 月 15 日正式收到校招 offer 。今年阿里依然火热,看简历编号。内推阶段大约有 6w 份简历,而据 hr 告知实际通过比例略大于 1% ,所以竞争还是非常激烈。

一面 :

    > 时间约 50 分钟。注重基础。广度加深度。刨根问底。

> 自我介绍熟悉 java 、 jvm 、 Python 、 Hadoop( 包括 HDFS 、 MapReduce 、 HBase 等 ) 、优化算法等。

所以,针对这些来提问。

大概仅仅记得这么多。后面想起来再补充。

1. Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题(建议熟悉 jdk 源代码。才干从容应答)
2. MapReduce 输入输出格式
3. Mapper 和 Reducer 的功能
4. MapReduce 的工作机制,Shuffle过程
5. HDFS 工作原理,怎样实现 HA
6. 节点间通信机制
7. DataNode 怎样冗余备份
8. Java 的引用类型有哪几种
9. 抽象类和接口的差别
10. 设计模式会哪些
11. 工厂方法模式的长处(低耦合、高内聚,开放封闭原则)
12. 数组多大放在 JVM 老年代(不仅仅是设置 PretenureSizeThreshold 。问通常多大,没做过一问便知)
13. 老年代中数组的訪问方式
14. GC 算法,永久代对象怎样 GC , GC 有环怎么处理
15. 谁会被 GC ,什么时候 GC
16. 假设想不被 GC 怎么办
17. 假设想在 GC 中生存 1 次怎么办
18 缓存设计与 LRU
19. hashCode() 与 equals() 生成算法、方法怎么重写
20. 关系型和非关系型数据库差别
21. HBase 原理与工作机制。怎样保证 HA ,怎样保证宕机数据可恢复
22. 数据库处理大数据的优化
23. 索引的分类
24. 模糊查询性能
25. 排序算法与时空复杂度(快排为什么不稳定,为什么你的项目还在用)
26. 逆波兰计算器
27. Hoffman 编码
28. 查找树与红黑树
29. Spring 框架等
30. 项目
31. jvm 怎样分配直接内存, new 对象怎样不分配在堆而是栈上,常量池解析

一面总结 :

    > 面试官居然主动对我说谢谢 …  惊我一身冷汗,只是立马意识到肯定过了。

     1) 面试问题主要依据自我介绍和项目,所以,对写在简历上的内容。一定要理解的清清楚楚。也不要为了简历看起来牛比而罗列经历,尤其是自己浅尝辄止的项目。
比如。建议不要轻易说自己写过爬虫。由于没那么简单,通常会追问懂 Scrapy 框架吗。为什么不做成分布式的。怎样并行爬取多个站点,怎样设计并行任务分发器,爬来的数据怎样存储,索引,检索,你认为还有什么能够改进的。爬虫属于搜索引擎框架的一部分,面试爬虫非常easy给自己挖一个 “ 系统设计 ” 的坑。
2) 阿里注重基础、潜力和兴趣,而一些初创公司往往更注重马上上手的技能。这一点在面试中有所体会。
3) 阿里注重基础。可是仅有基础是不够的。
项目经历与实习经历能够加分。一线互联网公司的实习经历能够镀金。由于师门严禁实习,因此须要项目弥补,除去研究的课题多目标优化算法, Hadoop 是个“大宝贝”,它包括了 java 、 jvm 、设计模式、大数据处理框架、分布式计算、 HA 、负载均衡、主备一致性等,也包括分布式文件系统、分布式计算框架、非关系型数据库的实现等,差点儿面试官问的不论什么场景的问题。都能够在 Hadoop 中找到解答,所以, Hadoop 是我最大的加分项,弥补了自己零实习的弱点。
至于 Hadoop 须要掌握到什么程度,才干应对面试?原理上,能够回答上面提到的点,操作上。自己能够实现淘宝的数据魔方的 Demo 。
4) 面试官的问题不会了怎么办?个人不建议直接说不会,而是要 “ 扯 ” 。 比如,问我 Spring 、 iBatis 等框架,而我一点不懂,但我说会 Hadoop ,你有什么业务需求,我差点儿都能够在 Hadoop 找到实现。问我 MySQL 数据库。我也不精通,但我会告诉他 HBase 怎样解决。 5) 关注面试的公司,关注阿里的开源技术与自主框架,比如,问到 jvm 的时候。我会向面试官阐述淘宝在 jvm 方面的优化工作,以及 jvm 在 Hadoop 方面的优化。 有兴趣的同学能够关注淘宝 “ 莫枢 ” 。后离职增加 Oracle 、 Azul ,在虚拟机方面做了非常多出色的工作。详情关注: ITeye 的高级语言虚拟机专栏。
6) 回答问题时,切忌使用 “ 应该 ” 、 “ 好像 ” 、 “… 吧 ” 等不确定性词汇,由于搞技术还是须要严谨的,面试官不想招聘一个什么都靠推測的同事。

二面 :

     >时间约 23 分钟,感觉是交叉面,是其它部门的主管,听语气感觉级别在 P8 以上。

>首先也是自我介绍,针对自我介绍和项目,開始提问。

1. IO 流。字节流 --> 字符流
2. 递归读取目录下的文件,代码怎么实现
3. HashMap 与线程安全问题
4. rehash
5. Web 框架
6. 项目与 Hadoop
7. 问我未来的职业规划
8. 问我有什么问题(问了关于阿里project师文化的问题)

二面总结 :

     1) 自我介绍要抓住重点。与岗位匹配。比方面技术。社团经历能够不说(可是 hr 面非常实用)。
2) 二面问的技术内容非常少。感觉是能够看到一面成绩,进行简单的确认。 所以,笔试或一面表现好,对后面的面试非常有帮助。
3) 当面试官不再关注你的过去,而是和你谈未来谈理想的时候。基本表明面试通过了。比如,问职业规划和你对阿里的想法等问题的时候。

hr 面 :

     >知乎上称阿里的 hr 是神存在,掌握生杀大权。多少英雄好汉历经残酷的技术面,却倒在 hr 面前,可是从个人的经历,感觉 hr 姐姐还是非常 nice 的。
40 分钟,并没有自我介绍,而是直接轰炸。 1. 暑假在学校做什么呢
2. 平时喜欢阅读什么书
3. 问我俱乐部主席的工作,有什么收获(社团主席。是 hr 的兴趣点)
4. 课题是什么,遇到什么困难。你是怎样解决这个问题的
5. 为什么不从事本专业相关工作
6. 你专业是电磁场,为什么要转行
7. 你是一个什么样的人
8. 你的缺点
9. 以前最大的打击
10. Web 框架不会怎么办,以后工作的内容和你如今研究的不同怎么办
11. 职业规划
12. 假设能去杭州家人允许吗
13. 向我介绍了所应聘部门
14. 问我有什么问题

hr 面总结 :

     1) 一定要坦诚。 hr 阅人无数,更别说阿里的 hr 了。

2) 面试官是在考察适合自己团队的人选。而面试者,也是在寻找适合自己的团队和 manager ,这是双向选择的过程。所以自己的心态要和面试官持平。记住,面试官是在寻找团队伙伴,不是在对你考试,这样的心态有助于减轻紧张的心情。
3) 社团经历对自己的成长,看不见摸不着,但在时间管理、情绪控制、团队管理等方面,有非常大的收获。程序员的工作寿命并不长,当技术过硬,開始带团队的时候,相信一定会感谢自己在社团的经历。

推荐书目 :

     限于师门不允许实习。所以仅仅能在学校学习干货。提升内功。

一直相信,理论决定上限,技能决定下限。修炼好内功,学习各种武功招式便轻而易举。
《 Java 编程思想》, Java 业界神书。不建议入门阅读,相比較,《 Java 核心技术 I 》非常适合入门。
《 Java 核心技术 I 》,假设不想啃《 Java 编程思想》,这本是绝佳的入门神器。
《 Effective Java 第二版》,别犹豫了。深入 Java 必读,由于 James Gosling 也读,务必打好基础再读。否则会打击学习 Java 的信心。居家旅行。催眠必备。
《 Java 解惑》, Effective Java 作者又一力作,解析 Java 的各种坑。
《 Java 并发编程实战》,玩 Java ,怎么能不懂并发。并发的世界非常奇异。
《 Java 特种兵》,淘宝谢宇所著,洋洋洒洒,也是进阶读物,不可入门。作为补充參考。
《深入理解 Java 虚拟机》,周志明所著。国内业界良心之作。建议參考 ITeye 高级语言虚拟机专栏。也可与《 Java 性能优化权威指南》參考来看。
《 Java 性能优化权威指南》。深入理解 Java 性能优化细节, James Gosling 力荐。
《设计模式之禅》。一个个生动的样例,让枯燥的设计模式也变得有趣,不建议刚開始学习的人直接看 GOF 的《设计模式》。
《 Hadoop 权威指南》。掌握 Hadoop 必看。不用多说。
《 Hadoop 技术内幕》之 HDFS 、 MapReduce 、 YARN ,參考与补充。 《 Python 核心编程》,对 Python 的解说深入浅出,尽管基于 Python2.5 。可是核心思想不变。Python有非常多库。建议阅读官方文档,里面有详解和演示样例代码。 《计算机网络》,网络基础入门必备。
《大型站点技术架构》,简单实在,理解大型站点架构,学习 Hadoop 之后才看发现架构上非常多类似之处。
《 Linux 内核设计与实现》。抛开了 Linux 内核纷繁的源代码,给出了关键的架构与实现,与《深入理解 Linux 内核》互补,重点推荐。
《深入理解 Linux 内核》,差点儿全部关键的疑问,都能够在里面找到解答。须要时查阅,千万不要从第一页開始读。 《程序员面试金典》,注意不是 “ 宝典 ” 。涉及算法、对象设计、概率智力题等,面试神器。
《剑指 offer 》。刷题必备,面试利器。
《编程之美》,你会发现各大公司的算法题好像似曾类似。
《大话数据结构》、《算法》、《算法导论》,算法是我的弱项,以我的教训建议算法长期准备。
实际上。上面的书目我表示也仅仅看了 50% 不到。大神的作品须要重复研读。比方《 Effective Java 》。 个人体会。 Hadoop 是个“大宝贝”,尤其对于我这样零实习,少项目的非科班学生,在面试的时候化解了非常多面试官的刁难问题。它是 DT 时代的关键技术,包括了太多大神的心血和智慧。深入理解,不仅是 Java 与编程的提升,并且提高架构与系统设计的能力。抓蛇抓七寸。对于 Hadoop 一样,当中关键的组件有分布式文件系统、分布式计算框架、非关系型数据库、分布式协调服务等。而各个组件都有其核心架构与关键技术点。认清架构。由广度到深度,各个击破。理论加实践,建议在 Debug 中探索工作机制。 最后推荐一些技术资源, lintcode 、 leetcode 刷题必备(适可而止,不同于北美 FLAG 和一些 startup 公司,国内的面试往往须要非常多应用技术。也就是项目), July 的 csdn 博客 “ 结构之法 算法之道 ” ,数据库能够学习淘宝沈询的视频和博客,操作系统( Linux 进程管理与调度、内核同步、虚拟文件系统、内存管理、进程地址空间等)。推荐站点: 牛客网, 七月算法,博客在线, ImportNew 、 ITeye 、 InfoQ 、 csdn 、博客园, IBM developerWorks 等。 另外,能够关注技术大牛的微博。开开眼界也是极好的,比如寒冬 winter 、淘宝沈询、淘叔度、淘宝丁奇、阿里正祥、淘宝正明、淘宝褚霸、 RednaxelaFX 、 2gua 等大神。
对于非应届生,有足够的时间,修炼内功,切忌基础不牢就模仿武功招数。对于应届生,时间不多。能够刷刷题,多看看面经。磨磨枪。

写在最后 :

2015 年寒假前,决心 coding ,弃硬投软,自学扎哇,剑指阿里。寒冬盛夏,枕书而眠,得偿所愿。所以, i can you can 。每一个人努力都能找到好工作。

原文链接:http://bbs.byr.cn/#!article/Job/1728920

(转自牛客网)

非计算机专业的伟伯是怎样拿到阿里Offer的。求职励志!!!的更多相关文章

  1. 学java编程软件开发,非计算机专业是否能学

    近几年互联网的发展越来越好,在国外,java程序员已经成为高薪以及稳定职业的代表,虽然国内的有些程序员很苦逼,但是那只是少数,按照国外的大方向来看,程序员还是一个很吃香的职业.根据编程语言的流行程度, ...

  2. HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?

    // test02.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  3. 作为非计算机专业的学生,觉得 C 语言远比其他语言易于上手,正常吗?

    作者:invalid s链接:https://www.zhihu.com/question/26659552/answer/615531516来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  4. 不是计算机专业的,可以转专业甚至转行学IT吗?答案揭晓~

    相信有这样疑惑的同学不在少数,随着互联网的快速发展,越来越多的人想要转行到IT行业,可又担心自己的专业不对口,影响将来的发展,那么究竟不是计算机专业的可以转行IT吗? 当然是可以的,其实很多的IT大佬 ...

  5. 想学大学计算机课?这 37 门 CS 专业必修课,了解一下

    最近,不少高校延迟开学,大家只能宅家上网课. 有一些朋友,想趁此期间,多学点计算机的专业课,却不知从何学起. 211,985大学的计算机专业课都是经过授课教师精心安排的,从大一到大四,课程合理设置,循 ...

  6. Joel Spolsky对计算机学生的七大建议

    /*先来介绍下作者:Joel Spolsky,世界最具影响的程序员网志Joel on Software的主人,软件业一位旗帜鲜明的思想者,一位传统软件管理理念的挑战者.他创办的这个网站被程序员誉为“反 ...

  7. 开始使用THREE.JS

    开始使用THREE.JS 译序 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏, ...

  8. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  9. 初步了解CPU

    了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...

随机推荐

  1. 光猫&路由器网络配置

    前期准备:电脑(工业电脑).网线.光猫.路由器 1.检查连接光猫后能否正常上网:把网线两头的水晶头,一头插在光猫上的千兆口,一头插在电脑(工业电脑)的网口上,看电脑能否正常上网: 可以正常上网:说明光 ...

  2. Maven实战读书笔记(二):Maven坐标与仓库

    2.1 Maven坐标 Maven坐标是Maven用来表示一个组件依赖的标示. Maven通过下面几个元素定义坐标:groupId.artifactId.version.packaging.class ...

  3. xcode中自定义log打印

    打印内容包括 在哪个文件中 ? 在哪个方法中? 将要执行什么操作?   // 此打印实现前提: // 1.在.pch文件中实现自定义log打印方法,log名换为LCLog // 2.定义一个宏obje ...

  4. More Effective C++ - 章节一 : 基础议题

    1. 仔细区分 pointers 和 references references和pointers的差别描述如下: pointer:当需要考虑"不指向任何对象"时,或者是考虑&qu ...

  5. typedef重复定义 和 error: ‘long long long’ is too long for GCC

    今天发现一个很有意思的编译问题,然后在Stack Overflow上也有看到类似的.就是出现了 long long long 类型错误提示 错误提示如下: /home/yejy/algorithm_a ...

  6. (13) openssl ca(签署和自建CA)

    用于签署证书请求.生成吊销列表CRL以及维护已颁发证书列表和这些证书状态的数据库.因为一般人无需管理crl,所以本文只介绍openssl ca关于证书管理方面的功能. 证书请求文件使用CA的私钥签署之 ...

  7. solr中的Tokenizer Filter

    Tokenizer Tokenizer 的工作是将文本流分解为令牌,其中每个令牌(通常)是文本中字符的子序列.分析器知道它配置的字段,但 tokenizer 不是.Tokenizers 从字符流(Re ...

  8. SpringMVC中controller的跳转

    controller中的重定向 (1)不需要传递参数重定向 方式一:使用ModelAndView        return new ModelAndView("redirect:/toLi ...

  9. LeetCode(34)Search for a Range

    题目 Given a sorted array of integers, find the starting and ending position of a given target value. ...

  10. 在不是modelAttribute的情况下,如何保存页面输入值的方法(多行遍历)

    <c:forEach var="prdRelInfo" items="${goodRelPrdList}" varStatus="s" ...