相关阅读:

阿里职位层级(附P级详细要求)

从技术转管理,我做了什么来拯救自己?

直播平台整体架构

转载自:https://www.jianshu.com/p/7a5ccee47118

前言

今天本是一个阳光明媚,鸟语花香的日子。于是我决定在逛街中感受春日的阳光~结果晚上七点的时候,蚂蚁金服后端大佬来了电话,要进行一轮的技术面试。我一脸黑人问号???现在的面试都流行突袭吗?

于是我的第一次面试之旅,就此壮烈的展开。

自我介绍

首先呢,大佬让我用两分钟自我介绍。我本以为自己能滔滔不绝,将对方视作相亲对象般全方位介绍自己。结果不到半分钟,我就介绍完了==。

五秒钟的沉默后,大佬嗯了一声。

感觉自己的脸上堆满了尴尬而不失礼貌的微笑。

最近的项目经历

这时大佬问我最近从事了什么项目,研究生阶段都进行了什么样的工作。

那必须吹一吹!从JAVA的起源到Spring的发展再到jenkin的使用顺便提一嘴dva+antd,结果半分钟一到,又说不下去了==

大佬很有耐心的听我说了一堆语无伦次的话,开始进入正题。

Spring


大佬:我看你用过这个Spring啊,你来聊聊为什么我们要使用Spring呢?

我:(因为大家都说好啊)首先呢,spring是一个庞大的框架,它封装了很多成熟的功能能够让我们无需重复造轮子。其次呢,它使用IOC进行依赖管理,我们就不用自己初始化实例啦。

大佬:(我就知道你会说IOC啦)那你解释一下IOC吧

我:IOC就是依赖控制转化,利用JAVA的反射机制,将实例的初始化交给Spring。Spring可以通过配置文件管理实例。

大佬:那我们可以直接使用工厂模式呀。工厂模式也可以管理实例的初始化呀,为什么一定要使用Spring呢?

我:啊........因为.......方便?(仿佛看到大佬凝固的表情,为了不那么尴尬,我决定转移话题)。而且spring的IOC是单例模式呢。

大佬:默认的是实现是单例模式吗?

我:对的。

这里查了一下为什么不用工厂模式而使用IOC。其实本质上还是因为IOC是通过反射机制来实现的。当我们的需求出现变动时,工厂模式会需要进行相应的变化。但是IOC的反射机制允许我们不重新编译代码,因为它的对象都是动态生成的。

数据库


大佬:你使用过哪些数据库呀?

我:mysql还有sqlight。(被遗忘的mongodb在角落里无声哭泣)

大佬:那你使用的ORM框架除了hibernate还有哪些,比如IBatis?

我:我用过MyBatis

大佬:哦,那你能讲一下你对两个框架使用后的感受吗?

我:当时使用Mybaits的时候,也有去社区了解了一下两个框架的口碑,发现大家的战队都坚定而对立。对Hibernate的不满通常是因为它在复杂关联中往往会带来严重的性能问题,也就是N+1的问题。但是它是面向对象支持的最好的框架了。而Mybatis则相对而言比较易于使用,只需要会SQL语句就行了。但是也意味着会破坏一些面向对象的规则。

大佬:(似乎有点认可)那你了解数据库的事务吗?能讲一下数据库的事务级别吗?

我:(忘得一干二净)emmm不好意思我记不太清楚了。

大佬:那你还记得数据库的加锁吗?比如乐观锁,悲观锁?

我:(求您别问了T T)

大佬:(锲而不舍)那我现在假设有一张用户表,你也知道,正常的表只能存放大概一千万或是两千万左右的数据。但是阿里巴巴有上亿的用户?你会怎么存储呢?

我:可以纵向分割与横向分割。

大佬:那你觉得这里应该纵向还是横向呢?

我:纵向(载入史册的嘴瓢)

大佬:(很有耐心)可是这样我的数据库还是放不下啊

我:(仿佛突然睡醒)应该是横向分割,把表拆分成多个表然后分布式存储

大佬:那你觉得我们怎样分割比较合适呢?

我:(还能再问?)可以根据地域,但是根据用户分布的情况来说,还是会有某些地域访问稠密而有些地域比较稀疏的问题。难道按照用户等级?

大佬:不,用户等级会变动,不合适。你这个阶段暂时没有考虑这个问题

我:(谢谢您的台阶啊!)

Linux


大佬:你们服务器用的是什么操作系统啊?

我:(呀,送命题)我们用的是阿里云上的centos系统

大佬:那你对linux熟练吗?

我:不是很熟悉,仅仅是入门,能够敲一点指令。

大佬:好,那你知道库函数和内核调用吗?

我:内核调用是指进入内核态然后执行指令然后再回到用户态吗?

大佬:对

我:我知道的大概就这么多了,只了解一些概念上的内容。(凉凉送给自己)

大佬:那你知道如何查看进程吗?

我:啊...记不得了,我一般都查一下指令

(于是大佬果断放弃了其它linux问题)

JVM


大佬:你了解JAVA虚拟机吗?能解释一下底层的模块吗?

我:(如果你通知我明天面试,我就了解了><)不好意思,这一块知识我不熟悉,但是我很愿意去了解(赶紧表忠心啊!)

 线程


大佬:你知道什么是线程安全吗?

我:(乌鲁乌鲁说了一堆)就是比如如果同时有两个线程访问同一个变量,那么它们对变量造成的修改所带来的结果可能是不确定的。

大佬:那你知道JAVA有什么方法来实现线程安全吗?

我:(前几天还翻译了博客,但是一问起来忘得比啥都快)首先是synchronized修饰词,然后JAVA还自己实现了一些封装好的类比如LatchDown,Atomic系列(????????后来一查是CountDownLatch!还有大明湖畔的final关键字呢?还有小明湖畔的Lock呢?还有那些实现线程的collections比如ConcurrentHashMap呢?)

(大佬果然开启了下一个问题)

分布式


大佬:你有写过分布式的业务吗?

我:我写过一个基于HDFS分布式存储的KVStore,上层使用Hadoop的API实现。

大佬:那个是分布式存储,我想了解一下分布式业务?

我:(赶紧纠正)那dubbo算吗?(于是介绍了一下自己了解的dubbo)

大佬:ok。那你觉得分布式的话会遇到什么问题呢?

我:那就是经典的CAP问题了。没有数据库能够同时满足这三个问题

大佬:那你能具体解释一下CAP代表什么吗?

我:(紧张到一片空白)Consistency?Atomic?P...Persistency???

大佬:.......

CAP: 是指Consistency一致性,Availability可用性,Partition Tolerance分区容忍性

设计模式


大佬:你了解过设计模式吗?

我:了解了解

大佬:那你了解过哪些设计模式呢?

我:blablabla

大佬:那你解释一下指令模式吧

我:这个有点像函数式编程的思想。指令模式就是指将各个操作封装为统一的接口,并且提供各个操作的实现类。这样我们只需要面向command接口编程,解除了调用类和指令之间的强耦合。

总结

最后当然和大佬话一话家常,进行最后的挣扎。总结来说,要想成功进行一次阿里巴巴的面试,你需要了解甚至掌握以下内容:

· JAVA语言,尤其是线程

· JVM原理

· 数据库(事务,加锁,ORM)

· Linux

· Spring(重点!)

· 分布式

· 设计模式

可以说是涉及范围非常广了。不过其实要想成为一名优秀的后端开发,是需要这些知识面的,只能说自己还是太菜了。还需要继续深入学习!

【完】

如有收获,欢迎「分享 

「点赞「评论 

看完本文有收获?请转发分享给更多人


欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。

  • 长按下方的二维码可以快速关注我们

  • 如想加群讨论学习,请点击右下角的“加群学习”菜单入群

一位程序猿面试蚂蚁金服后端的经验总结!相关推荐

  1. 面试 | 蚂蚁金服面试经历

    晚上面试蚂蚁金服,前端,觉得大厂问的问题就是不一样,有纵向有横向,针对下列几个问题,我面试时候答的不好,现在重新学习,沉思一会... 第一个问题: 1.先问熟悉jq吗?解释一下jq的架构, jq源码的 ...

  2. 面试蚂蚁金服(意外拿到offer)分享四面经历,从线程锁到数据库

    最近一位笔者经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑.痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了. 笔者面的是阿里的Java研发工程师岗,面试流 ...

  3. Java程序员校招蚂蚁金服,微信抢红包实战案例,纯干货

    开头 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一.因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统.内存.CPU.编程语言等多方面的基础能力,更为考验一 ...

  4. 看看别人是怎么面试蚂蚁金服的!社招Java面经分享

    最近几天,有的人在偷偷地买蚂蚁的基金,有的人却偷偷的在蚂蚁面试. 最近确实是面试的好时候.大家都奔着大厂去的,最近也分享了好多大厂的面经了,什么阿里.字节.京东.美团.百度.腾讯.滴滴.网易-已经数不 ...

  5. 从平台到中台:Elaticsearch 在蚂蚁金服的实践经验

    https://www.infoq.cn/article/IfwCVj-qJ4TU0dmBZ177 本文根据他在 2018 Elastic 中国开发者大会的分享整理. 大家好,我是来自蚂蚁金服中间件团 ...

  6. 从平台到中台 | Elaticsearch 在蚂蚁金服的实践经验

    来源 | 授权转载自金融级分布式架构公众号 编辑 | Vincent AI 前线导读:善仁,蚂蚁金服通用搜索产品负责人,通用搜索目前拥有上万亿文档,服务了上百个业务方,是蚂蚁内部最大的搜索产品.其所在 ...

  7. 从平台到中台 | Elasticsearch 在蚂蚁金服的实践经验

    善仁,蚂蚁金服通用搜索产品负责人,通用搜索目前拥有上万亿文档,服务了上百个业务方,是蚂蚁内部最大的搜索产品.其所在的蚂蚁中间件搜索团队专注于构建简单可信的搜索产品,是阿里经济体中最大的搜索服务提供商. ...

  8. 蚂蚁金服nlp大赛经验分享

    有幸与师兄组队参加了2018年6月份由蚂蚁金服主办的NLP大赛,最终复赛b榜成绩f1值为0.7416,以万分点的优势侥幸获得第一.这是我参加的第二个正式的算法比赛,也是我师兄参加的第一个比赛,下面从几 ...

  9. Java程序员校招蚂蚁金服,mysql培训考试

    一.Netty概念及体系结构 01 Netty--异步和事件驱动 Java网络编程NIO选择器 Netty的简介.谁在使用Netty.异步和事件驱动 Netty的核心组件 02 你的第一款Netty应 ...

  10. Android性能优化系列之布局优化,Android程序员校招蚂蚁金服

    25 26 rInflate方法关键代码 void rInflate(XmlPullParser parser, View parent, Context context, AttributeSet ...

最新文章

  1. Navisworks Api Quantification
  2. python官方-Python官方中文文档强势来袭
  3. 权益证明协议中的拜占庭容错
  4. 局部钩子能防全局钩子吗_阿特的钩子成为队友的噩梦,毫无游戏体验感,小夏:当场哭了出来...
  5. 微信开发 根据openid 获取用户基本信息
  6. Google存储海量私人信息 隐私问题不堪设想
  7. php 星座运势_星座运势查询示例代码
  8. 【二分法】计蒜客:切割钢管
  9. 【同113】LeetCode 129. Sum Root to Leaf Numbers
  10. Linux Performance Observability Tools
  11. Object-c学习笔记十八-----NSPredicate
  12. x10I pC套件 官方网站下载
  13. Phodal 的 2018 节点:Think Big Be Long
  14. python读取lmdb文件_python中读写LMDB数据库
  15. 美国时间格式化成通用时间
  16. 接口测试有那些工具,他们的优劣势?
  17. 脑芯编 | 窥脑究竟,结网造芯(三)
  18. 视频压缩编码基本原理
  19. 复数运算(对数,指数,正弦)
  20. Java Web项目中缺少Java EE 6 Libraries怎么添加

热门文章

  1. Linux 下编译安装 PHP 5.6
  2. Linux下Bash编程之算术运算符详解(三)
  3. 5.VMware View 5.0安装与部署-安装view agent与模版
  4. 正版卡巴斯基安全部队2011激活码1年
  5. mysql安装及常见设置
  6. 民营企业实施ERP 须先上规范化补习班
  7. iOS开发之UIControlEventEditingChanged失效
  8. macOS和iOS间的隔空接力功能
  9. linux 中软件安装的三种方法
  10. python中的JSON(1)