阿里巴巴面经

本文详细记录了一次面试经历,从技术面的算法题、C语言问题,到测试面的面试流程与讨论,再到技术面的Linux OS原理、多线程互斥等知识点,最终被刷掉但获得测试岗位的机会。分享了面试经验,包括自我介绍、算法题解答、C语言基础、Linux原理及多线程知识。
下午四点多到的地方,人很多,等到晚上六点左右才轮到我面试,之前问了面过得同学,
基本上都是写个排序的算法啊,C语言简单问题,甚至是智力题等等,当时感觉还是挺自信
的,可以后来感觉远没有这么简单的。。。。
一面:技术面
     面试官看着我的简历,让我做个自我介绍什么的,然后就问专业不怎么合适?后来直
接给我一个算法题目,只讲思路,不写代码
     给出N个数,求最大的第K个数???给出算法,并分析它的时间复杂度,感觉貌似简
单,但是想要给出最优的方法,不动脑子估计蛮麻烦的。我给的答案,最简单就是冒泡法
了,O(N*K),当然他不是最优的了,又给了一个快速排序,利用它的性质求出第K大元
素,我的方案是对的,但是时间复杂度我求不出来,后来在他的提示下,磕磕绊绊的写了
出来。最坏的时间复杂度呢??当时已经被问蒙了,快排和冒泡法比较呢??那个好一些
?(应该和K的大小有关系的。)只是当时已经被问的很狼狈了,脑子有点晕啊。后来就
换成C的知识了,貌似简单,暗藏凶险啊(可能是我比较挫)。
例子:struct a{char I; int  j};  sizeof(a)大小???(不要马上说是8),struct 
a, struct b
a=b这样的赋值语句对吗??为什么?如果正确,编译器是如何实现的?用的什么方法?为
什么这么实现?汗~~~~~~~~,为什么要进行内存对齐,原因是什么,可以不对齐吗??甚
至是CPU体系的一些东西?汗~~~当时已经是心灰意冷了,他很坦诚的告诉:算法基础太差
了,我面研发就把我给cut掉了(郁闷中。。。。),但是觉得我的综合素质还不错,就让
我去试试测试。当时心情跌入低谷了,再也不敢YY百度这样的企业了。。。。。。。
 
二面:测试面
     等了一个小时,开始面试。考官很有意思,上来没有问我任何的问题,开始给我讲研
发和测试的工作性质的不同,大概四十分钟吧,什么测试的方法(黑盒,白盒,灰合),
极限值法,测试的重要性,测试的发展前景,当时我就蒙了,没有高明白什么意思?又饿
又困(后来才知道,我是被指定的面试官考察的,看有没有测试的潜力)。接下就是聊天
了,纯粹的聊天了,兴趣了,爱好了,学习过程中有什么心得了,大家聊天很开心也比较
随意,多少缓解了之前的郁闷心情吧。。。。最后给了一个小题目,说大家探讨一下,其
实就是考我的思维能力的程序,说出思想。感觉他对我的评价挺好的(因为后来看了面试
官给我的评语了,嘿嘿。。)
 
三面:算是技术吧
     面试官问,怎么电磁场的要搞这个呢。技术大概两个吧,看了我知道点linux,就问
:fork,wait,exec 函数作用什么的,比较简单,后面一个个人水平有限,觉得挺难的,
晚上睡前想到一点思路。在Shell中ping 一下命令,然后ctrl+C 退出。问这个过程是什么
样子的,描述一下?汗啊~~~~
当时只是说ctrl+C发出一个signal强行结束这个进程。后来想想应该是中断,软中断,处
理信号,内核和用户空间切换的问题吧,之后就是简单的聊天吧
 
不知道算是四面不。HR又和我谈了一会,就结束了,听说有人直接给offers的。。。。。
晚上十点半才到宿舍,饿的一塌糊涂。。。
   
感谢,信号的彬彬在外面等了我三四个小时,虽然俺最终还是被刷了,但是希望给大家分
享一些面试经验吧

 

 

给出N个数,求最大的第K个数
一般是用堆做,时间复杂度Nlog(K)
还有一个O(N)的算法,分治,一般的算法书上都有的
不过常数蛮大的,不适用
 
我补充,支付宝的题目
1、设计模式,内存管理;
2、a[C],求ai+aj=C+1的所有数对
3、linuxOS硬件工作原理
4、计算机网络红蓝军问题
5、多线程互斥的种类

 

1.用C++代码写出sql语言中的join
: 2.a[n]数组,找出和最大的一个区间
: 3.正n边形,画两条线分成三个面积相等的部分,线可以是曲线
: 4.找出完全二叉树最右边的那个子结点,并计算时间复杂度
: 5. 。 。 。 。 。
:    。 。 。 。 。
:    。 。 。 。 。
:    。 。 。 。 。
:    。 。 。 。 。
: 每个点表示一个值,其中任一个点比它上面的,左边的值大,尽快的找出给定的值。
 
: 6.增加堆栈功能,以线性复杂度立即找出堆栈的最大值
: 7.实现atoi功能,附加实现字符串中出现的第一个整数
: 现在感觉技术题没那么可怕,就是考你的常识,逻辑思维能力还有沟通交流能力吧。..
: 是开放性问题,摸不透hr的心思呀。
: 嘿嘿,希望大家都找到满意的工作
 

 


### ### 阿里巴巴 Java 工程师面试经验分享 阿里巴巴在 Java 工程师招聘方非常注重技术深度和系统设计能力。面试流程通常包括多轮技术和行为,考察候选人对 Java 基础、系统设计、项目调优以及算法能力的掌握程度。 #### 技术面试内容 阿里巴巴的 Java 技术面试非常重视基础知识的掌握程度,不仅要求了解概念,还要求理解其内部实现机制。例如,面试官可能会深入询问 JVM 的内存模型、类加载机制、GC 算法等。此外,Java 多线程编程、锁优化机制、并发工具类(如 `ConcurrentHashMap`、`ThreadPoolExecutor`)的使用和原理也是高频考点[^3]。 算法和数据结构方,常见的问题包括链表、树、图、排序和查找算法等。部分面试官会要求手写代码,例如实现快速排序、二叉树遍历等基础算法。建议在准备过程中多刷 LeetCode、牛客网等平台上的高频题,确保代码逻辑清晰、边界条件处理得当。 #### 项目与系统设计 项目经验在面试中占据重要地位。面试官通常会要求候选人讲解自己参与过的项目,尤其是项目的整体架构、数据流向、性能瓶颈及优化手段。例如,有候选人被要求在白板上画出负责项目的流程图,并详细解释设计思路、数据量变化时的扩展方案以及遇到的技术难题[^5]。 系统设计类问题通常涉及高并发、分布式系统的设计。例如,设计一个高可用的订单系统、缓存穿透的解决方案、消息队列的选型与使用场景等。这类问题需要候选人具备良好的架构思维,能够从数据库、缓存、服务拆分、负载均衡等多个维度进行分析。 #### 面试流程 阿里巴巴的 Java 工程师面试流程通常包括以下几个阶段: 1. **简历筛选与内推**:通过内推可以免去笔试环节,简历需要突出项目经验和技术深度。 2. **电话/视频初**:考察 Java 基础知识,问题较为基础,例如线程池原理、JVM 内存模型等。 3. **多轮技术面试**:每轮面试侧重不同技术方向,可能包括算法、系统设计、源码分析等。 4. **交叉/终**:由不同部门的面试官进行,考察综合能力与岗位匹配度。 5. **HR **:主要了解职业规划、薪资期望等。 #### 面试准备建议 1. **深入掌握 Java 核心知识**:包括 JVM、多线程、集合框架、类加载机制等。 2. **刷题与模拟面试**:使用 LeetCode、牛客网等平台进行算法训练,同时可以找人模拟技术面试。 3. **项目复盘**:对参与过的项目进行系统梳理,准备清晰的技术讲解和设计思路。 4. **了解阿里技术栈**:熟悉 Spring、MyBatis、Netty、Dubbo、Zookeeper 等主流框架和中间件的使用与原理。 5. **关注架构设计**:提前准备常见的系统设计题目,理解高并发、分布式系统的构建思路。 #### 示例代码:线程池的简单实现 ```java import java.util.concurrent.*; public class ThreadPoolExample { public static void main(String[] args) { ExecutorService executor = new ThreadPoolExecutor( 2, // 核心线程数 4, // 最大线程数 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100) // 队列容量 ); for (int i = 0; i < 10; i++) { int taskId = i; executor.submit(() -> { System.out.println("执行任务:" + taskId); }); } executor.shutdown(); } } ``` ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值