前言
今天本是一个阳光明媚,鸟语花香的日子。于是我决定在逛街中感受春日的阳光~结果晚上七点的时候,蚂蚁金服后端大佬来了电话,要进行一轮的技术面试。我一脸黑人问号???现在的面试都流行突袭吗?
于是我的第一次面试之旅,就此壮烈的展开。
自我介绍
首先呢,大佬让我用两分钟自我介绍。我本以为自己能滔滔不绝,将对方视作相亲对象般全方位介绍自己。结果不到半分钟,我就介绍完了==。
五秒钟的沉默后,大佬嗯了一声。
感觉自己的脸上堆满了尴尬而不失礼貌的微笑。
最近的项目经历
这时大佬问我最近从事了什么项目,研究生阶段都进行了什么样的工作。
那必须吹一吹!从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(重点!)
-
分布式
-
设计模式
可以说是涉及范围非常广了。不过其实要想成为一名优秀的后端开发,是需要这些知识面的,只能说自己还是太菜了。要继续深入学习!给大家推荐一个群:629740746 里面有大量的高端学习资料想要往架构师方面发展的
相关推荐
这种勇敢和牺牲精神,成为了中华民族不屈不挠、勇往直前的象征。 4. **寓意启示** - 故事的深层含义鼓励人们勇往直前,无惧困难,同时也告诫我们要合理利用资源,避免过度消耗,体现出古人对生态环境的朴素认识。 ...
文章强调了中国人民为了保卫自己的祖国而壮烈牺牲的精神和科学家的贡献。同时,文章也提醒我们不能忘记祖国的屈辱的历史,珍惜时间,刻苦学习,做一个有用之人,用科学振兴中华。 文章还讲述了中国人民在抗日战争中...
【描述】: 《国殇》是屈原创作的一首祭歌,描绘了楚国战士在战争中英勇无畏、壮烈牺牲的情景,表达了对死难英雄的深深哀悼。 【标签】: 文学, 诗歌, 屈原, 楚辞 【部分内容解析】: 《国殇》是楚辞中的名篇,出自...
【红色旅游体会】\n\n红色旅游是一种独特的文化体验,它不仅是一次旅行,更是一次历史的寻访和精神的洗礼。这次我在20XX年9月28日参观了王小庙新四军无名烈士墓群,深感震撼。这个地方位于革命老区,是全国最大的...
王孝杰一生征战,尽管有过失败,但始终展现出坚定的爱国之心,最后在与契丹的战斗中壮烈牺牲。常建并没有简单地以胜败评价英雄,而是以王孝杰的英勇和牺牲精神为主题,表达了深深的敬意和哀思。 常建的诗风在这首诗...
这首诗通过刻画战士们的壮烈牺牲,展现了楚国人民坚韧不屈的精神风貌,其悲壮的氛围和强烈的爱国主义情感,激发了后世无数人的共鸣。李清照的豪情壮志,以及岳飞的壮志未酬,都可视为对《国殇》精神的继承和发展。...
- **虎门销烟**:1839年林则徐在广东虎门销毁大量鸦片,展示了中国人民反对毒品的决心,也引发了第一次鸦片战争。 - **三元里抗英斗争**:1841年广州三元里居民自发组织抵抗英军,是中国近代史上最早的民众抗日...
然而,即使如此,他仍然无法满足身体的需求,"道渴而死"象征着他在追求理想道路上的壮烈牺牲。 夸父在临终前,他把手杖奋力向前一抛,这一举动可能寓意着他将自己的意志和精神传递给了后人,他的手杖化为了桃林,...
这三个成语连起来,从情感上的极度痛苦到壮烈的牺牲,再到内在的智谋与准备,形成了一条情感与行动的连续线。 在实际应用中,“断脍决腹”多用于文学作品或者历史叙述中,用来描绘那些为了正义事业或忠诚于某种信念...
不幸的是,在2016年11月12日的一次飞行训练中,由于跳伞失败,余旭壮烈牺牲。 3. 特技飞行表演的难度与风险:空军八一飞行表演队的表演动作难度极高,包括"魔鬼编队"、"双机对飞"等高难度动作,对飞行员的身体素质...
1. 学习者需要掌握7个生字和14个会写字,包括“维护、壮烈、牺牲、谢意、沉浸、深情、凯旋、凝固、阿姨、精通、经济、贡献、圣坛、罪恶、呼吁、健康、永驻人间”等词语的读写。 2. 通过有感情地朗读课文,理解信件的...
他在临汾战役中壮烈牺牲,展示了对国家的忠诚和无畏精神。 8. 战争的代价:临汾战役的惨烈,揭示了战争的残酷,大量生命的丧失换来了城市的解放。这场战斗成为了对和平的沉重呼唤。 这些知识点揭示了一个普通人在...
然而,在31日下午,当消防人员在转移过程中遭遇突然变化的风向风力时,不幸遭遇山火爆燃,导致27名森林消防人员及4名地方干部群众壮烈牺牲。这些英雄中大多数正值青春年少,他们用自己的生命守护了国家和人民的安全...
最后,郭嘉在战斗中壮烈牺牲,得到了朝廷的高度赞扬和追封。 这篇文献揭示了郭嘉作为一个儒家知识分子的责任感和忠诚精神,同时也展现了元代社会的动荡以及地方官员如何应对危机。郭嘉的事迹对于研究元代政治、军事...
4. 花云被捕后,宁死不屈,最后壮烈牺牲,死后被追封为东丘郡侯,他的妻子和侍儿也表现出了高尚的节操。 5. 文言文的特殊句式分析,如“城破,吾夫必死”,这是典型的省略句和被动句,体现了古代汉语的特点。 6. ...
在书中,嘎羧的回忆片段描绘了战争的残酷,大象与士兵们共同抵抗侵略者的英勇事迹,特别是公象罗罗的壮烈牺牲,体现了动物在危急关头的无畏精神。 此外,故事还揭示了人类与动物之间的深厚关系。村民们对嘎羧的关爱...
王成在影片中的壮烈牺牲,体现了志愿军战士对祖国的忠诚和热爱。他面对敌人,坚决喊出“为了祖国,向我开炮!”的口号,这一刻,他的生命虽面临威胁,但他选择与敌人同归于尽,以保护阵地和战友。这种为国捐躯的高尚...
在黄海海战中,邓世昌指挥致远舰冲向敌军旗舰,不幸被击沉,他与全舰官兵壮烈牺牲,体现了中国军人的忠诚与勇敢。邓世昌被追封为壮节公,其事迹激励了无数后来者,成为中华民族不屈不挠、抵御外侮的象征。 这些英雄...
这部电影不仅展现了战争的残酷和壮烈,更深层次地探讨了人性、责任与牺牲的主题。 影片通过描绘大规模的诺曼底登陆场面,让观众深刻感受到战争的无情与恐怖,炮火连天,鲜血染红了海滩,无数士兵在瞬间失去生命,这...
在这里,你可以看到火山弹堆积如山,仿佛能看到那次壮烈的地质活动场景。沿着海岸线漫步,你会被大自然的鬼斧神工深深震撼。 接下来我们会前往猪仔岭,这是一座形似小猪的小岛,因其形状酷似一头小猪而得名,是...