参加阿里这类大公司的社招该如何准备?

插 :  前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。  坚持不懈,越努力越幸运,大家一起学习鸭~~~ 

引言

其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。

但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。

其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而且会尽量写出一些干货。

第一个问题:阿里面试都问什么?

这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题。

说实话,LZ只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小。

甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。

LZ参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司,而是因为这种公司,大部分情况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人。而1-2年经验的同学,往往就刚好处于这个尴尬的阶段。

对于能有3-5年经验的这部分人中,每个人的经历又都不同,所擅长的点也不一样,因此这就会导致每个人的问题和范围都不太一样。

很少说有哪个知名的互联网公司,比如BAT、京东、360、搜狐、网易等这些公司,其社招面试还有固定的问题和模式,让你可以像应届生面试一样,在面试前靠临时抱佛脚度过这一关。

大部分公司在社招的时候,不光是阿里,其它公司也都一样(因为LZ在一年多前也参加过很多其它知名互联网公司的面试,详情见《记录2015年年初跳槽的经历!》),基本上都分为两个阶段的提问。

第一个阶段是主语言本身以及它的高级特性,第二个阶段是讲述自己的项目,并在中间穿插着问题。

所以,LZ不妨就这两个阶段,谈谈社招面试的准备,而不是去把阿里面试的过程背一遍。说实话,LZ也确实记不住,所以不要再问LZ阿里面试都会问哪些问题了,你看看上面那个连接里的文章,也会发现,LZ里面也基本上没有写具体的问题,原因是一样的,真的记不住啊。(就是因为记忆力的问题,导致LZ从小偏科,文科成绩一直堪忧,-_-)

社招面试如何准备?

LZ会分为四个部分来谈论这个问题,由于LZ本身是Java出身,因此关于主语言的问题,都是与Java相关,其它语言的同学可以选择性忽略。此外,面试的时候一般面试官的问题都是环环相扣,逐渐深入的,这点在下面大家可以更明显的感受出来。

1、主语言本身以及它的高级特性。

主语言当然就是你平日里拿来赚钱的家伙。不要告诉LZ你没有主语言,你会N多种语言,或者是你精通N多种语言,你要非这么说的话,你可以来杭州试试,LZ保证不打死你,最多打残。

LZ的主语言很显然是Java,那么对于Java来说,它的语言本身以及它的高级特性,都有哪些比较容易在面试中问到呢?

一般情况下,主要有以下知识点很容易被问到。(PS:以下所列举的,都是一些Java相对而言比较高级一点的知识点,因为这里谈的是社招,而不是校招)

1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。

比如,面试官先问你HashMap是不是有序的?

你肯定回答说,不是有序的。那面试官就会继续问你,有没有有顺序的Map实现类?

你如果这个时候说不知道的话,那这个问题就到此结束了。如果你说有TreeMap和LinkedHashMap。

那么面试官接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?

如果你回答不上来,那么到此为止。如果你依然回答上来了,那么面试官还会继续问你,你觉得它们两个哪个的有序实现比较好?

如果你依然可以回答的话,那么面试官会继续问你,你觉得还有没有比它更好或者更高效的实现方式?

如果你还能说出来的话,那么就你所说的实现方式肯定依然可以问你很多问题。

以上就是一个面试官一步一步提问的例子。所以,如果你了解的不多,千万不要敷衍,因为可能下一个问题你就暴露了,还不如直接说不会,把这个问题结束掉,赶紧切换到你熟悉的领域。

2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。

比如面试官可能会先问你,如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?

这个时候你可能会说可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?

如果你继续回答的话,面试官可能会继续问你,你还知道其它的实现方式吗?

如果你还能说出很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?

如果你说出来某一个方式比较好的话,面试官依然可以继续问你,那如果让你来写的话,你觉得还有比它更好的实现方式吗?

如果你这个时候依然可以说出来你自己更好的实现方式,那么面试官肯定还会揪着这个继续问你。

为什么说面试的时候要引导面试官,原因就在这了。因为面试官的提问很多时候都是有迹可循的,你如果抓住了他的轨迹,能够猜到他下面很可能会问什么,那你在回答的时候就可以往你想要谈的方向去说。这样面试时就会显得更加从容,更加的游刃有余。

3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。

IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?

有的面试官还会问你有没有更好的设计,这个时候如果你不知道请果断说自己现在的水平有限,想不出来更好的设计,千万不要信口开河,随意YY。

4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。

一个GC部分简单的连环炮。

面试官可以先问你什么时候一个对象会被GC?

接着继续问你为什么要在这种时候对象才会被GC?

接着继续问你GC策略都有哪些分类?

你如果说出来了,继续问你这些策略分别都有什么优劣势?都适用于什么场景?

你继续说出来了以后,给你举个实际的场景,让你选择一个GC策略?

你如果选出来了,继续问你,为什么要选择这个策略?

下面是关于类加载机制的简单连环炮。

首先肯定是先问你Java的类加载器都有哪些?

回答了这些以后,可能会问你每个类加载器都加载哪些类?

说完以后,可能会问你这些类加载之间的父子关系是怎样的?

你在回答的时候可能会提到双亲委派模型,那么可以继续问你什么是双亲委派模型?

你解释完了以后,可能会继续问你,为什么Java的类加载器要使用双亲委派模型?

你回答完以后,可能会继续问你如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?

再来一个关于内存的连环炮。

首先肯定就是问你内存分为哪几部分,这些部分分别都存储哪些数据?

然后继续问你一个对象从创建到销毁都是怎么在这些部分里存活和转移的?

接着可能会问你,内存的哪些部分会参与GC的回收?

完事以后,可能还会问你Java的内存模型是怎么设计的?

你回答了以后,还会继续问你为什么要这么设计?

问完以后,还可能会让你结合内存模型的设计谈谈validate关键字的作用?

你在谈的时候,肯定会提到可见性,那么接着可见性这三个字,还可以继续问你并发的内容。

基本上Java语言本身以及语言稍微高级点的内容就是以上部分,如果你能把以上四部分了解的非常透彻,那基本上Java这部分就没啥问题了,因为光以上的内容就够你跟面试官聊很久了。你聊这些聊得久了,自然问你其它问题的时间就会短点。

你从LZ写这些问题的过程也应该能感受出来,很多时候,面试官都是顺着一条线一路问下去的,如果你觉得这条线你不熟悉的话,就要及时拐弯,引导面试官去问其它方面的问题。千万不要一直往下深入,直到自己跳不出来为止,那就尴了个尬了。

2、讲述自己的项目,并在中间穿插着问题

这一部分是面试过程中必问,也是聊得最久的一个阶段。除非你前面的语言部分非常扎实,扎实到面试官问了一两个小时,依旧没有探出你对语言本身的了解到底有多深。否则的话,你一定逃不过自己的项目这一关,而且一般情况下聊得时间不会太短。

这一部分内容,一般的模式就是你自己去讲你做过的项目,然后面试官会冷不丁的让你去解释其中某一部分,比如让你解释当时为什么要这么做,或者问你现在觉得有没有更好的办法。而这些穿插的问题,大部分与你的项目所用到的技术有关。而你需要做的,就是充分、再充分的去总结自己做过的项目(尤其是最近的一两个项目),挖掘出一个甚至N个亮点,以备于到时候可以让面试官产生眼前一亮的感觉。如果你能达到这种效果的话,基本上离你成功就不远了。

这部分内容由于和每个人自己的经历息息相关,因此这里也没法列举可能问到的问题。这篇文章《程序员面经:面试前到底该不该刷题以及面试前该如何准备》是LZ之前写的,里面大概讨论了下如何在面试前总结,有兴趣的可以去了解一下。

3、额外的加分项

上面两个阶段基本上是必问的,还有一些加分项。这些加分项中,有些内容面试官也会问你(比如TCP/IP协议、算法),但更多的是会先问你了解不了解,你了解的话再继续聊,不了解的话就直接略过了,不至于因为这种问题而直接把你打入地狱。

下面LZ列举一下这些加分项,如果可以的话,这些加分项还是要争取一下的。

  1. 计算机系统原理。

  2. 网络通信协议(TCP/IP,HTTP等)。

  3. 数据结构与算法。

  4. 著名开源项目的源码。

  5. 你自己有很棒的开源项目。

  6. 你的个人博客。

  7. 待评论区补充。

这几项当中,对于前1-3项,如果你之前就比较了解,只是由于时间问题忘记了的话,还是可以临时抱佛脚一下的。至于后面4-6项,就需要你日常的积累了,不是一时半会儿能做到的。如果你平日里没有积累,那么后面这三个加分项只能抛弃了。

4、与你职位相关的内容

其实这最后一项是对前面三项的补充,你应该尽量去主攻和你面试的职位相关的内容。比如你面试一个实时计算的职位,那么你的算法最好要厉害,对于著名的实时计算开源项目要熟悉,最好阅读过源码,而且还要对分布式系统有一定的见解。

因此,这个第4部分没有具体的内容,只是提醒你,如果你很明确自己的面试职位,最好在面试前准备的时候,尽量朝职位的需求方向靠拢,这样成功的可能性更大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18669.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里最新研究:当ChatGPT 遇上推荐系统,遭遇滑铁卢

文 | 小戏 在 GPT-4 屠榜了 NLP,SAM 零样本分割一切让 CV 消失后,不知道大家会不会有好奇 AI 三大现实应用的另一边岁月静好的推荐系统有没有感受到来自遥远大模型带来的巨大压力。 尽管 ChatGPT 的训练过程似乎没有对推荐系统太多的兼容,但是…

大学四年到现在的阿里技术专家,我做了啥?

你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习&#…

阿里巴巴达摩院通义千问【附申请链接】阿里版ChatGPT

🥑 Welcome to Aedream同学 s blog! 🥑 文章目录 报名测试实际体验效果 阿里云作为数一数二的全球云平台,阿里的大语言模型通义千问还是值得期待的,凭借强大的算力支持还是有机会赶上人工智能发展浪潮。 早前阿里巴巴达摩院关于人…

大学四年到阿里技术专家,我是怎么走过来的

点赞再看,养成习惯,微信搜索【三太子敖丙】我所有文章都在这里,本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点,文末有福利。 青铜-万恶之源 《计算机基础》,这是所有读者大学…

助你成为专业终端人,阿里巴巴第三届终端练习生计划开启报名!

​随着科技进步、技术演进,互联网基础设施越来越完备,终端设备的规模&类型爆炸式增长,当下前端技术与移动技术也有了更深的相互融合,终端技术体系(前端技术 & 移动技术)应运而生。 阿里巴巴终端委员…

ChatGPT将上线新功能!OpenAI现场演示官方版AutoGPT,创作画画发推一条龙!

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【计算机视觉】微信技术交流群 丰色 明敏 发自 凹非寺转载自:量子位(QbitAI) OpenAI官方AutoGPT,要来了! 就在Auto…

用ChatGPT编写测试大纲和测试用例

问: 当用户未支付时,不需要数据上报;当用户支付成功时,需要数据上报。请以这个逻辑帮我写测试用例 ChatGPT: 好的,根据您提供的逻辑,我可以为您列出一些测试用例: 1.确认在用户未…

chatgpt赋能python:Python人机对战:探究最优解决方案

Python人机对战:探究最优解决方案 简介 Python是一种开源的高级编程语言,已经广泛应用于网站开发、数据分析、科学计算、系统运维等领域。但是,Python也是一种非常适合进行人机对战的语言。 Python人机对战可以帮助我们提高编程技能、锻炼…

chatgpt赋能python:Python打折促销-最优解决方案

Python打折促销 - 最优解决方案 作为一个有10年python编程经验的工程师,我想分享一些关于Python打折促销的最优解决方案。 为什么使用Python来处理打折促销? Python是一种高级语言,其轻量级和易于学习的特点使其成为数据科学、机器学习和人…

chatgpt赋能python:Python数据拟合:用最优方案处理大数据

Python数据拟合:用最优方案处理大数据 Python语言在数据处理和分析方面非常灵活且功能强大,是拟合大量数据集的一种快速、可靠的方法。拟合是机器学习和数据分析中一项重要的任务之一,其目的是建立一个数学模型来描述现实世界中的现象。拟合…

软件输入中文出现乱码

当软件出现输入中文乱码时,而安装过程没错时,可以采取以下措施 1、点开设置 2、选择时间与语言 3、选择区域 4、点开区域的右上角 5、选择区域 6、点管理,然后更改系统区域设置 7、把勾选了提供全球语言支持去掉 8、重启看看行不行

win7英文版很多软件中文显示乱码解决方案

在win7英文版下,很多软件中文字体均显示问号,通过如下解决方案,经测试,可以完美解决: 一、通过控制面板->时钟、语言和区域,打开区域和语言面板; 二、修改如下配置: 1、区域和语言…

英文版WIN7系统中打开软件中文乱码解决办法

在win7英文版下,很多软件中文字体均显示问号,通过如下解决方案,经测试,可以完美解决: 一、 通过控制面板->时钟、语言和区域,打开区域和语言面板 二、修改如下配置: 1、区域和语言->格式…

英文系统中文乱码的解决

Windows7英文系统显示中文乱码的解决 Windows7英文系统显示中文乱码的解决 很多安装Windows7英文操作系统的朋友会显示中文乱码,特别是在安装了中文程序的时候,那么如何解决呢? 如果我们所使用的操作系统是英文版的,那么会发现…

解决电脑解压中文乱码问题

打开控制面板 点击图中的 更改日期、时间和数字格式 点击 管理 然后选择 更改系统区域设置 有问题的情况下,Beta版是被勾选的,取消勾选 点击确定,系统会提醒重启,重启之后,解压将不出现乱码

电脑文字乱码

解决方法 1、在开始菜单中打开控制面板,找到“时钟和区域”这一项。 2、然后选择“格式”这个选项卡,在这个界面,把格式设置为“与window显示语言匹配”。 3、接着再打开“管理”选项卡。 4、已经打开“管理”这个选项卡后,在“…

部分软件安装界面出现乱码(奇形怪状的问号等)/文件打开异常/文件无法正常打开

问题示例(下面是我个人遇到的类似问题) 以下是出现的乱码示例,分别是phpstudy和CAJViewer的安装界面,同时还遇到CAJViewer打开论文失败(“文件无法正常打开”)的情况 问题分析与解决(分析1失败&…

Windows 控制台cmd中文乱码的解决办法

我本机的系统环境: OS Name: Microsoft Windows 10 专业版 OS Version: 10.0.14393 N/A Build 14393 有时在cmd中输出的中文乱码 解决办法如下:在cmd中输入 CHCP 65001 按Enter键,然后查看不再乱码 注:CHCP是一个计算机指令&am…

Windows批处理:中文显示乱码解决方法

echo offecho 这是一个临时的测试批处理pause这是一个测试用的批处理,执行后,显示如下: E:\Workspace\SourceCode\bat>锘? 锘? 不是内部或外部命令,也不是可运行的程序 或批处理文件。 杩欐槸涓€涓复鏃剁殑娴嬭瘯鎵瑰鐞…

电脑出现乱码的原因以及解决方法

在日常使用电脑的过程中,经常会遇到电脑出现乱码,那么为什么会出现乱码呢?出现乱码又该怎么解决呢?下面我们一起来了解一下。 出现乱码的原因 系统乱码:主要是Windows中显示乱码,比如菜单、桌面、启动界面…