首页 | 北大青鸟科海学院欢迎您
我的位置:主页 > 新闻资讯 >

分享面经:想进阿里,我们必须要知道它的门槛

2019-11-07 14:48供稿中心:北大青鸟编辑

    
        早上八点半左右到达纽宾凯酒店,交了简历后在休息区等待。大约九点十分左右进行一面。
 

 
        一面的面试官貌似是一个 java程序员。没怎么问 C++ 。我尽可能的回忆一下他的问题,并将我的作答记录如下(答得不一定都对):
        1.数组和链表有什么区别。
        答:数组是一块连续内存,随机访问效率很高,但是插入操作需要移动内存中的数据;链表是不连续内存,插入和删除元素的效率高,但不支持随机访问。
        追问:为什么数组的随机访问效率高?
        答:数组给出了一个基准地址,要访问任意一个内存,可以用该地址加上下标。
        追问:不考虑步长吗?
        答:如果用指向某类型的指针加上下标,就不用考虑步长了。( int A[3]; *(A+2)==A[2])
        2.怎么起多线程?多线程编程要注意什么?
        答:pthread_create 函数创建线程,多线程要注意对共享变量的保护,使用 mutex 或者信号量等,进行线程同步。
        追问:mutex 和信号量有啥区别?
        答:信号量用在多线程中更耗内存,用mutex省内存。
        3. 说说熟悉的linux命令。
        答:umask文件的操作权限屏蔽字
        chmod 修改对文件的操作权限  
        chdir 修改工作目录        
        netstat 查看网络状态      
        top 查看系统性能
        df 查看磁盘的使用情况      
        kill 发送信号
        4.实现一个生产者消费者模型,一个生产者,多个消费者。(进程 PV 操作)
        答:我直接使用了信号量的 sem_post 和 sem_wait 函数,而面试官的意思是使用 pv 原语。这一题没答上来。主要是没有深入理解信号量的实现。
        5. 说说同步 IO 和异步 IO 。
        答:同步 IO 包括阻塞,非阻塞,多路复用,信号,异步 IO 只有一种。同步 IO 和异步 IO 的区别在于,数据从内核复制到进程时,同步 IO 是阻塞的,而异步 IO 是非阻塞的。
        6. 谈谈数据库的索引有什么用?什么字段需要建索引?
        答:有索引搜索起来更快,一般要经常搜索的字段需要键索引。
        7. 数据库的机制, SQL 语句在数据库中是如何运行的?
        答:数据库接触的不多,这个真心不知道。。。
        8. 网络连接中的长链接和短链接。
        答:不知道。
        9. 谈谈哈希算法
        答:这题我达成哈希表了。显然没答到点子上。
        最后,面试官给了我一些建议:首先,我对数据库需要进一步学习,现在的程序都使用数据库。第二,要深入理解知识的内部原理,知其然也知其所以然。
        十点十五分钟左右,进行二面。二面也是技术面,面试官应该是一个比开发组长大一些的人物,他的问题更多是算法和内存管理。
        1. 谈一谈 C++ 的内存管理。
        答:1.初始化数据段;2.未初始化数据段;3.堆;4.栈;5.正文。
        追问:堆和栈有什么区别?
        答:堆是程序员自己分配的,分配的大小没有限制(机器内存的上限以内),但需要自己回收,速度也没有栈快。
        栈是自动分配自动回收,能分配的大小是有限制的,用于存放函数的本地变量,返回点等信息。
        2.new/delete 和 malloc/free 的区别
        答:1.new 根据类型自动计算分配的内存的大小,malloc 得自己计算;2.new 返回的指针是有类型的,malloc 返回的指针是 void* 型的;3.new 一个class,会调用类的默认构造函数,delete 调用析构函数。
        3.socket 编程的基本步骤。
        答:客户端 socket,connect 。服务端 socket,bind,listen,accept 。
        4.AVL 树的节点删除。
        答:自从有了红黑树, AVL 树可以说是功成身退了。因此我没有认真看过 AVL 树,我讲了讲红黑树。(红黑树虽然很复杂,但是面试之前还是理解得去看一看,有帮助的 )
        5.建立网络连接以后,假设客户端传过来很多份数据,这些数据的声明周期是不一样的,怎么处理。
        答:当时我没有完全理解面试官的意思。他给我解释了一下,这一题是考察内存管理。很多份的数据,当然不能来一个 new 一个,应该是 new 一块较大的内存,然后来了新数据直接往内存里放,当数据的声明周期到了,就将它从内存移出,给新数据留出空位。
        6.内存泄露是怎么造成的,怎么去检测。
        答:内存泄露是由于开辟的空间没有回收,导致内存越战越多,最后不够用了,导致泄露。有专门的内存泄露检测工具,但是我没用过,所以我没答上来怎么检测。
        7. 编写一个 makefile.
        答: makefile 是可以写成模板的,只要把模板记住,什么工程都可以套用。模板我在其他随笔给出吧。
        8. 怎么使用 GDB?
        答:启动 gdb, 在关心的函数或者行数设置断点,然后 run, 再 n 单步执行 ,p 打印关心的变量。如果程序 core 掉了,可以用 where 查看最后的栈信息。也可以调试 core 文件。
        最后面试官问我迄今为止最沮丧的事是什么,我回答是高考成绩没那么理想,blablabla... 。面试官问我有啥问题问他。这里注意,大家一定要提前准备好问题,貌似看过一篇帖子,说不问问题的话,会显得对这家公司没啥兴趣。我问俩问题,一是面试官如何看待代码复杂度和代码效率的平衡。他回答要看投入产出比,并且如果是瓶颈,可以追求代码效率更多(这个问题问得没啥水平)。第二个问题:随着年龄的增长,怎么在技术这条线上一直走下去。他回答 1. 要保持对技术的关注,但可能没法到达一个很深的深度,更多的可能是广度;2. 随着经验的增长,应该从更高的角度去看,从架构去看,用什么语言实现就不那么重要了。
        二面完了以后忘了看时间,不知道面了多久。在门口等了三分钟左右,进行三面。
        三面是 HR 面。由于没有经验,不知从何谈起。HR让我自己说一说自己,开心的,不开心的,等等。我谈了谈我的理想。。。这个话题貌似大了。 HR 将话题又拉回到大学四年,除了学习,我还做了什么,我讲了讲大学生活,blablabla...总之就是谈天说地了一番。感觉还是要学习学习 HR 面到底咋搞。最后,问了 HR 两个问题。1. 杭州这个城市怎么样;2. 淘宝的下一个增长点在哪。HR说,杭州是一个宜居的城市,整个城市给人的感觉是休闲的。但是阿里的工作压力也不是开玩笑的。其实这一点我早有心理准备。现在的互联网公司,哪个不是加班加点呢?对第二个问题,HR说阿里要打造一个电商的生态圈,增长不是一个点,而是整体的。
        阿里的面试就此结束,给我的感觉就是,自己差得太远了,进一步学习是必须啊。哦,还有一点,阿里很重视自己的企业价值观,要是在面试的时候能提一提这个,可能会效果更好。明天又是新的开始,努力学习,努力找工作。
 
 
成功与现实 只差一个 
<

*  信息已加密,咨询老师会第一时间与您联系,请保持电话畅通

北大青鸟合肥科海学院:

在线职业规划老师:15656517280 金老师

合肥科海信息技术职业学校版权所有

皖ICP备09015552号-1

南校区地址:合肥市包河区合肥工业大学产业楼

北校区地址:安徽省合肥市北城区岗集镇

微信扫一扫

关注学校公众号

获得更多学校最新咨询