阿里实习面经(非内推)

本文分享了一位求职者在阿里巴巴实习面试的经历,包括技术面试、交叉面试及HR面试的详细过程,涉及C++基础知识、编程实践及个人素质评估等方面。

        今天阿里实习生面试,可能运气比较好吧,问到的基础自己复习过,面试官人也比较和蔼,即使答不上来也会慢慢引导你,顺利面了三面,要知道之前都是只有一面的我啊!!!留下面经,自己作为总结批注,也希望对看到的人有所帮助。

        一面:技术面,简单自我介绍以后,就问我觉得自己有什么优点。我当时那个汗啊怎么一上来就问这个,然后我就回答说自己对一些不太懂或者难的问题比较较真,顺势举了一个在项目中的刚好自己写的大数据表格显示的例子,答完后他应该比较满意,接着开始问项目,我做了我项目的一些具体描述后,他又问了你觉得项目中有哪些难点,亮点。其实自己在做的时候可能会遇到一些具体的困难,但现在想总归一时半会不知道怎么回答,就自己组织了blabla讲了一大通还算顺溜的表述,然后他又接着问了一些细节性的东西等等项目相关的东西。接着他又问了一些我最后一个本科毕设的一个小软件,自此项目的东西算是结束了。因为项目中做的东西基本都是GUI,他就又问我对类似于windows编程的东西的了解,我回答就是知道一些但没具体了解过。

        接着问了一些语言方面的基础,比如析构函数为什么是virtual,继承时候的构造顺序,static_cast和dynamic_cast,返回函数中临时变量的指针会不会有问题,如果你在写一段代码时new了很多东西,交给下一个人来写,但是他忘记delete,该怎么解决这个问题(这个没有回答出来,他引导我的答案是:设立一个全局的new,delete,每隔一段时间打印出new,delete的信息,然后检查,如果发现不需要的就进行delete),除此之外还问了些许网络的东西,数据结构,但都是随便问了问了解我的情况没有深入的问。了解了下自己看过的一些书或者博客。感觉自己遇到了一个好面试官,不会的东西他会引导你,你说的东西基本稍微一提他就懂你的意思,答案就不需要深入讲下去了。

        二面:交叉面,就简历中获得的“优秀研究生”怎么获得的,我就老实说了说实情,然后没有再说啥,直接给了题开始编程。。。题目是打印出10000以内所有的质数,尽量优化算法。其实当时就蒙了,不怕笑话我能说我所有C的基础题中最讨厌的就是这个素数么。。。稍微调整了下想到了第一个简单暴力的算法:挨个求每个数是不是素数,边界是2~n/2(假设在判断n是不是素数时),因为好久没写不确定另一个边界是不是n的开根号所以保险起见写了n/2。花了十几分写了之后确定自己还有一段时间,于是想了想比较高效的做法,于是写了另一个方法,回来后查了查发现比较官方的说法应该叫筛选法:因为给出的要求10000以内自然数中所有的质数,数据量不大,所以可以建立一个10001大小的bool类型的数组flag[10001],初始化所有的为true,以下标表示自然数,然后从最小的开始扫,当发现当前flag[i]为true时,把10000以内所有是以i为倍数的下标的flag置为false,直到10000。

        写完之后,他又甩给我一个题:字符过滤,两个字符串mask和str,过滤掉str中在mask里出现过的字符,并把str中的字符向前移动,填掉被过滤字符的漏洞。mask最大256字节,str最大4096字节。我的想法是如果能以字符作为下标,建立一个类似于字典的表来标记这个字符有没有在mask中,这样在扫str中字符的的时候就能直接找到这个字母有没有在mask里出现过,所以以此为依据建立了一个bool dic[256],将字符强制类型转换为int作为下标,得到一张mask的记录表;在扫str的字符时,考虑到逐个移动效率太低,所以设置头指针和尾指针指向str的开头和结束,并将尾部不在mask中的字符移到首部在mask的空洞中,提高效率。期间花的时间比较长,可能因为面试官甩了我题后自己跑出去上厕所玩去了,没了压力做题果然会太放松有点慢,加着没事思考问题时又喜欢神叨叨。。。=。=  面试官后来还问我怎么写这么慢,当然这跟自己写的太少也有关系。写了两个题,刚好面试官溜达一圈回来后可能心情大好,就随口问了问我预期的实习地点,然后的然后就这么木有了,二面完。

      三面:hr面,我能说个人觉得hr面还是比较恐怖的一个环节么!可以说比技术面还令人纠结么!hr是个姐姐,也是挺和蔼的,先就问我又没有投其他公司,我果断的说没有,然后说了投阿里的一些原因,个人感觉这个问题答的比较差劲(可能因为我确实还投了腾讯,而且之前没想到自己会有hr面所以根本没有准备此类的说辞!),应该给留下了比较不好的印象,后来还问了一些平常的hr会问的抽象的问题,比如你觉得你是怎样的一个人,遇到一些矛盾或者问题你怎么解决的,你有没有遇到一些重大的事件等等等,这些问题统一给你的感觉就是一是一时半会压根不会想起来哪件事重大,二就是不好回答,比如你为什么选阿里啊,师兄师姐选bat哪里的多一点,有很多问题你感觉是坑可你又不知道怎么避开,个人感觉是比较差的一面,面试时候需要好好重视的一个环节,难度不低于技术面啊!

        总结:个人感觉比较运气的一次面试吧,问的东西之前稍有看到或者准备过,比较薄弱的东西也没有问到,状态比较好,二面写代码思路也比较清晰。当然问题也很多,个人基础的储备太少,网络操作系统啊之类的东西只是本科学过,现在都忘掉了,所以这方面需要好好补习一下,代码方面还是写的太少。

### 项目经验的准备与展示 在准备Java实习面试时,项目经验的展示是关键环节之一。对于在校生而言,即便没有正式的实习经历,也可以通过课程设计、个人项目或参与开源项目来积累相关的开发经验。如果日常工作主要是简单的增删改查操作,而目标岗位要求具备分布式组件等高阶技能,则可以通过构建模拟实际业务场景的小型系统来体现自己的技术能力[^1]。 例如,可以尝试使用Spring Boot结合MyBatis Plus快速搭建一个后端服务,并引入Redis作为缓存层以提高性能;同时利用RabbitMQ实现异步消息处理机制,从而展示对分布式系统中常见组件的理解和应用能力。此外,还可以将这些项目部署到云服务器上,如阿里云ECS实例,这样不仅能够证明自己掌握了基本的服务端部署知识,还体现了持续集成/持续交付(CI/CD)流程的实际操作经验。 ### 技术基础与算法能力 除了项目经验外,扎实的技术基础同样重要。面试过程中通常会涉及Java语言特性、集合框架、多线程编程、JVM原理等方的基础问题。因此,在准备阶段应该复习相关知识点并确保能够清晰地表达出来。另外,很多公司还会考察候选人的算法解决问题的能力,这包括但不限于排序算法、查找算法以及数据结构的应用等[^2]。 为了提升这方的能力,建议平时多做一些LeetCode或者牛客网上的题目练习,并且尝试理解每种解法背后的逻辑思维过程。当被要求现场编写代码时,保持冷静思考,先明确题意再着手编码,注意代码风格的一致性和可读性,最后别忘了进行边界条件测试用例的设计。 ### 面试技巧与心态调整 良好的沟通能力和积极的态度也是成功获得offer的重要因素之一。在整个面试过程中要始终保持礼貌谦逊的姿态,遇到不会的问题不要慌张失措,而是诚实地说明当前对此不太熟悉但愿意学习的态度。对于一些较为复杂的技术难题,不妨先从简单情况入手逐步分析解决思路,展现出解决问题的过程而仅仅关注结果。 关于薪资谈判环节,除HR主动提及,否则尽量避免过早讨论具体数字。一旦收到录用通知后,可以根据自身实际情况综合考量是否接受该职位。当然,即使获得了满意的offer也不要停止探索的脚步,继续寻找更适合自己发展的机会总是明智的选择[^3]。 ```java // 示例:一个简单的Spring Boot应用程序结构 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @RestController @RequestMapping("/api") class DemoController { @GetMapping("/hello") public String hello() { return "Hello World!"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值