记录一次壮烈牺牲的阿里巴巴面试
副问题[/!--empirenews.page--]
技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战
媒介 本日本是一个阳光亮媚,莺啼燕语的日子。于是我抉择在逛街中感觉春日的阳光~功效晚上七点的时辰,蚂蚁金服后端大佬来了电话,要举办一轮的技能口试。我一脸黑人问号???此刻的口试都风行突袭吗? 于是我的第一次口试之旅,就此壮烈的睁开。 自我先容 起首呢,大佬让我用两分钟自我先容。我本觉得本身能滚滚一直,将对方视作相亲工具般全方位先容本身。功效不到半分钟,我就先容完了==。 五秒钟的沉默沉静后,大佬嗯了一声。 感受本身的脸上堆满了忧伤而不失规矩的微笑。 最近的项目经验 这时大佬问我最近从事了什么项目,研究生阶段都举办了什么样的事变。 那必需吹一吹!从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接口编程,扫除了挪用类和指令之间的强耦合。 总结 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |