首页 今日头条正文

电动三轮车,记一次蚂蚁金服的面试阅历,科幻

2015在实习的时分,其时一个一同实习的朋友在2019年3月份的时分忽然在微信上找我,问我要不要面试下蚂蚁金服。问了下相关信息才知道他在2018年11月的时分进到蚂蚁金服,现在招人就想到了我,问我要不要试一下。

刚开始仍是有所顾忌的,由于究竟是大厂,进去应该不容易,可是这个朋友进去了,想想应该也没有很难吧,究竟其时实习的时分,他技能并不怎样样。可是究竟曩昔好几年了,现在人家或许变凶猛了。

所以一开始并没有急着提交简历,而是说预备下再提交简历。然后就预备了一周,写简历,刷题,在网上找蚂蚁金服的面经。提交了一份简历,然后发现简历上面没有写学历,幸亏他还没提交,就修正了下从头发了一份,然后他又给我提了几个主张,所以又改了一版,才终究提交。

提交简历后的第二天下午,上班的时分蚂蚁金服的面试官打电话过来了,说要面试,其时正在上班,就说了下不便利,就约了当天晚上再面试。谁知道当天小组由于来了新人,晚上要聚餐,所以没办法,就厚着脸皮给面试官发了短信,说了下晚上暂时有事不能参加,想约下第二天或许周末。没想到面试官很了解,首要提出第二天晚上八点面试,短信上还让我好好预备,好好加油。

题外话:有时刻抵触的时分及时跟面试官交流,往往第一面是技能面,咱们都是做技能的,能了解的。平常多交点朋友往往会有意外的惊喜

题外话:有时刻抵触的时分及时跟面试官交流,往往第一面是技能面,咱们都是做技能的,能了解的。平常多交点朋友往往会有意外的惊喜

第二天晚上六点多快七点的时分面试官提早打电话了,这天是周五幸亏及时下班,原本是想着早点下班回去再预备预备,谁知道电话来电动三轮车,记一次蚂蚁金服的面试履历,科幻的那么忽然,刚点好晚饭,还没来得及吃。已然电话都打来了,那就面呗,就到店外面面试了。

流程

1、2分钟的毛遂自荐

大致讲了自己的名字,结业院校,哪年结业,个人爱好以及平常闲暇时刻做点什么,这个照实答复就好。由于之前有面试过,所以预备过。主张能够自己提早写下来,多说几遍,找点感觉。

2、你自己以为自己最了解的技能是什么?

这个就因人而异了,每个人了解的东西都不相同,必定要说自己最拿手的东西,不要给自己挖坑。由于面试官下一步就会依据你的答复进行发问。关于我来是,作业了几年学的东西多而杂,没有什么很深化的,可是总不能说没有吧,所以就说了 Java 开发比较多,所以 Java 言语了解多一点。然后面试官就说:“好,那我就问你一点 Java 言语方面的。”

3、 HashMap 底层完结原理是什么?

这个作为一个面试必问的标题,所以我仍是提早预备过的,看过源码。所以这个问题不是问题,答完,面试官说答复的对了。

HashMap,HashTable,ConcurrentHashMap 茗景堂面试必备,针对1.7和1.8的不同完结加以阐明。包含底层的数据结构,Hash 磕碰生成链表,Java8的链表转红黑树。

HashMap,HashTable,ConcurrentHashMap 面试必备,针对1.7和1.8的不同完结加以阐明。包含底层的数据结构,Hash 磕碰生成链表,Java8的链表转红黑树。

4、Java 的多线程有没有运用过

依据自身状况,用过就用过,没用过就没有用过。我答复有简略的运用过,可是运用的场景不多。面试官也就没追问了,说了不要紧,就持续。

5、讲一下线程池,以及完结固定巨细线程池底层是怎样完结的?

讲了下四中线程池,单一线程池,固定巨细线程池,缓存线程池,守时线程池。可是关于固定巨细线程池底层是怎样完结的,答复的欠好,面试官直接问底层的源码是不是没看过,就说是的。面试官说不要紧。。。

追加:线程池底层都是经过ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)来完结的。

corePoolSize: 表明需求设置的线程个数; maximumPoolSize: 线程池答应的最大线程个数; keepAliveTime: 闲暇线程存活的时刻,超越这个时刻就会被收回; unit: 存活时刻的单位;workQueue: 需求履行的使命行列。threadFactory: 线程工厂,用于创立线程,一般用默许的即可; handler: 回绝战略,当使命太多来不及处理,怎样回绝使命;回绝战略:直接丢掉(DiscardPolicy) 丢掉行列中最老的使命(DiscardOldestPolicy) 抛反常(AbortPolicy) 将使命分给调用线程来履行夏苡棓(CallerRunsPolicy)

追电动三轮车,记一次蚂蚁金服的面试履历,科幻加:线程池底层都是经过ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)来完结的。

corePoolS塔基拉ize: 表明需求设置的线程个数; maximumPoolSize: 线程池答应的最大线程个数; keepAliveTime: 闲暇线程存活的时刻,超越这个时刻就会被收回; unit: 存活时刻的单位;workQueue: 需求履行的使命行列。threadFactory: 线程工厂,用于创立线程,一般用默许的即可; handler: 回绝战略,当使命太多来不及处理,怎样回绝使命;回绝战略:直接丢掉(DiscardPolicy) 丢泥中莲弃行列中最老的使命(DiscardOldestPolicy) 抛反常(AbortPolicy) 将使命分给调用线程来履行(CallerRunsPolic和姐姐在一同的日子y)

6、Redis 为什么这么高效,运用的场景是什么?

答复了一下咱们运用 redis 做缓存和登录 session 存在的场景,以及 redis 是单线程的。

1、彻底依据内存,大多数恳求都是内存操作,十分快速;2、数据结构简略,操作简略;3、选用单线程,避免了不必要的上下文切换和竞赛条件,不存在多进程或许多线程的切换,不必考虑锁带来的功能耗费;4、运用多路 I/O复用模型,非堵塞 IO

1、彻底依据内存,大多数恳求都是内存操作,十分快速;2、数据结构简略,操作简略;3、选用单线程,避免了不必要的上下文切换和竞赛条件,不存在多进程或许多线程的切换,不必考虑锁带来的功能耗费;4、运用多路 I/O复用模型,非堵塞 IO

7、分布式服务是否了解,zookeeper,dubbo 是否运用过?

关于 zk 和 dubbo 这块用的不多,zk 首要是在运用 kafka 的时分会用到,可是不触及原理上面的研讨。dubbo 尽管项目中有用过,可是并不是很深化,就没说用过,直接说没用过。

8、幂等概念有没有了解过

幂等性是数学上的意义是关于参数 x,f(x)=f(f(x))总裁的契约情人白依晴;比方绝对值函数。在分布式环境下表明的是关于相同的恳求,在一次或许屡次恳求的状况下对体系的运用资源是相同的。确保失利重试不会导致提交两次。办法:带版别号的办法;选用数据库仅有索引办法;

幂等性是数学上的意义是关于参数 x,f(x)=f(f(x));比方绝对值函数。在分布式环境下表明的是关于相同的恳求,在一次或许屡次恳求的状况下对体系的运用资源是相同的。确保失利重试且望烈日不会导致提交两次。办法:带版别号的办法;选用数据库仅有索引办法;

9、常用的数据库是什么?

咱们常用的数据库是 MySQL,所以就答复了 MySQL。

10、MySQL 的业务特性有哪些?太湖字迷

首要业务是作为单个逻辑作业单元履行的一系列操作,这些操作作为一个全体一同向体系提交,要么都履行,要么都不履行。业务是一个不可分割的逻辑单元。A(原子性)业务的各步操作是不可分的,确保一系列的操作要么都完结,要么都不完结;C(共同性)业务完结,数据有必要处于共同的状况;I(阻隔性)对数据进行修正的一切并发业务彼此之间是彼此阻隔,这表明业务有必要是独立的,不应以任何办法依靠或影响其他业务;D(耐久性)表明业务对数据处理完毕后,对数据更改有必要耐久化,不管是业务成功仍是回滚。业务日志都能够坚持业务的永久性。

11、假如现在一台出产的数据库挂了怎样处理?

首要这题没有 get 的面试官想问的点是什么,所以就依据自己项目洗灌屋自身的状况做答了。咱们项目出产上的数据库是有主备的,在主数据库挂掉的状况下是会切换到备数据库,先确保业务的安稳性,然后在对溃散现场进行保存,便利后续剖析问题,找到原因。这儿面试官追问了一下,咱们主备的切换是主动的仍是手动的,这个由所以公司运维团队担任的,自己自身不是特别清楚,可是依据对公司运维团队的了解,应该是主动的。所以就这样照实的答复了。

12、数据库怎样完结 rollback 的?

数据库在写入数据之前是先讲对数据的改动写入 redo log 和 undo log,然后在操作数据,假如成功提交业务就会讲操作写入磁盘;假如失利就会依据redo log 和 undo log 逆向复原到业务操作之前的状况。

13、作业这么久你遇到的最难的技能点是什么?

我这边依据详细的东西司理,答复的是 kafka 的初度运用,由于其时是公司内部第一个引进 kafka,之前没有小组运用过,所以要采许多坑。并且那个时分 kafka 还没有发布1.0版别,电动三轮车,记一次蚂蚁金服的面试履历,科幻官网和网上供给的版别很凌乱不兼容。

14、用过Kafka 的话说下 Kafka优缺点有哪些?

Kafka 是一个高吞吐量的音讯行列。根本的组件有出产者,顾客,node 节点,出产者担任出产音讯,将音讯发送到指定的 topic 或许 partition 傍边。每个 partition 能够有多个分区副本,并且寄存在不同的 broker 节点上,确保数据的安全。partiton 的底层是依据 segment 段寄存的一系列日志文件,文件里边寄存的详细的音讯内容,每条音讯都有一个仅有的 offset 偏移量,并且是依照磁盘次序寄存的。由于磁盘是次序读写,所以 kafka 能够有很高的吞吐量。磁盘的次序读写比随机读写的功能高许多。每个顾客都归于一个顾客组,能够消费指定 topic 下的数据。

15、T齐欣云服CP/IP 协议是怎样确保数据可靠性的?

首要 TCP是面向衔接的传输协议。首要经过音讯承认和重试机制来确保数据传输的可靠性。

电面二

二面的时刻是在第二周,周四下午的时分打电话过来,问是否能够面试。可是其时在上班就说不便利,能否周五晚上面试。面试官说能够。谁知道,第二天正午还没下班就打电话过来说面试,或许原本周五咱们各自作业都多吧,他也想尽快搞完。我这边被忽然的面试电话给搞懵了一下,想着不是约好了晚上么,怎样搞突击。。。可是没办法,现已推过一次,没好意思再推掉。就说了我要找个安静当地,稍等下。

整个面试进程不是很好,首要是在公司内部找了个没人的当地,说话声响都不敢大,并且还常常有人经过,来来回回的。感觉这点没有决议计划好,也是这次的一个惋惜。所以咱们电话面试的时分必定要找个没人的当地。

整个面试进程不是很好,首要是在公司内部找了个没人的当地,说话声响都不敢大,并且还常常有人经彪言彪语过,来来回回的。感觉这点没有决议计划好,也是这次的一个惋惜。所以咱们电话面试的时分必定要找个没人的当地。

1、先进行毛遂自荐,然后介绍自己做过的项目,从项目流程架构规划等方面介绍

依据个人经历说了自己所电动三轮车,记一次蚂蚁金服的面试履历,科幻做的项目,以及流程和架构方面,由所以自己参加的项目,所以整个电动三轮车,记一次蚂蚁金服的面试履历,科幻流程说的仍是很流通的。究竟自己很了解。这块尽量多从几个方面讲,流程,架构,规划等。

2、HashMap 的查询时刻杂乱度

抱负状况下预组词是 O(1)的,可是实践中会呈现 hash 磕碰,导致无法到达小明滚粗去作用。

3、LinkedList和ArrayList的差异

LinkedList 底层是依据双向链表完结的,而 ArrayLi维塔妮st 底层是依据动态数组完结的;查询的时分 LinkedList 的功率要低于 ArrayList,由于电动三轮车,记一次蚂蚁金服的面试履历,科幻 LinkedList 需求遍历链表,而 ArrayList 底层数组依据下标直接获取数据。刺进删去数据的时分,LinkedList 功率比ArrayList 功率高,由于 ArrayList 在数据多的状况下会进行数组扩容或移动数组。多进程与多线程在编程上面有什么需求留意的

首要进程是资源分配的最小单元,线程是使命调度的最小单元

昆山财政局管帐之窗
比照维度 多进程 多线程 总结
数据同享、同步 数据同享杂乱,需求用IPC;数据是分隔的,同步简略 由于同享进程数据,数据同享简略,但也是由于这个原因导致同步杂乱 各有优势
内存、CPU 占用内存多,切换杂乱,CPU利用率低 占用内存少,切换简略,CPU利用率高 线程占优
创立毁掉、切换 创立毁掉、切换杂乱,速度慢 创立毁掉、切换简略,速度很快 线程占优
编程、调试 编程简略,调试简略 编程杂乱,调试杂乱 进程占优
可靠性 进程间不会相互影响 一个线程挂掉将导致整个进程挂掉 进程占优
分布式 适应于多核、多机分布式;假如一台机器不行,扩展到多台机器比较简略 适应于多核分布式 进程占优

5、ThreadLocal的运用场景

ThreadLocal 适用于每个线程需求自己独立的实例且该实例需求在多个办法中被运用,也即变量在线程间阻隔而在办法或类间同享的场景。

6、堆内存和栈内存有什么差异

堆内存是线程同享的,栈内存是线程私电动三轮车,记一次蚂蚁金服的面试履历,科幻有的;堆内存用来寄存由new创立的目标和数组,栈内存中寄存一些根本类型的变量和目标的引证变量;

高艺允恩

7、堆排序时刻杂乱度

小乒和小乓
排序称号 安稳性 均匀时刻杂乱度 最好时刻杂乱度 最坏时刻杂乱度
桶排序 不安稳 O(n) O(n) O(n)
基数排序 安稳 O(n) O(n) O(n)
归并排序 安稳 O(nlogn) O(nlogn) O(nlogn)
快速排序 不安稳 O(nlogn) O(nlogn) O(n^2)
堆排序 不安稳 O(nlogn) O(nlogn) O(nlogn)
冒泡排序 安稳 O(n^2) O(n) O(n^2)
挑选排序 不安稳 O(n^2) O(n^2) O(n^2)

8、假如优化数据库的数据查询,别的应用层上还能怎样优化?

1)数据库层面上:

除了主键索引,仅有索引之外,关于常用的查询字段也要加索引。查询的时分尽量运用主键索引,由于MySQL 的 InnoDB 的主键索引索引的是整行数据,而一般索引索引的是主键,会有回表操作。当然索引并不是越多越好,索引当然能够前进相应的 select 的功率,但一起也降低了 insert 及 update 的功率,需求酌情考虑。2、优化查询句子,尽量选用承认性查询句子,削减 or,in,not in,%xxx%语法的运用。

2)应用层面上:

选用缓存机制,将常用的数据进行缓存,添加拜访速度;分库分表,读写别离,将数据分隔读写,提高功能

9、强共同性,弱共同性,终究共同性

强共同性:关于更新后的数据,要求后续一切节点的任何操作都要获取最新值的状况;弱共同性:关于更新后的数据,后续节点的数据操作能够是新值,也能够是旧值,经过一段时刻后后续节点对数据的操作都是新值;终究共同性:是弱共同性的特别方法,存储体系确保在没有新的更新的条件下,终究一切的拜访都是最终更新的值。

10、有一个一百万行的文件,内部是购买的产品ID,怎样获取到购买最多的前一百个产品。

思路:首要调查的必定是大数据处理计划,这些数据必定不能一次性读取到内存,那就需求拆分,将数据分隔处理。假定要分隔为 n 个文件。分隔:假如 ID 是整型的话,能够直接选用取模(id % n)的办法;假如 ID 是字符串能够先核算 hash 值然后再取模(hash(x) % n)的办法,将相同 ID 的产品分到同一个文件中。针对每个小文件进行 top100的排序,回来购买最多的100个产品 ID依据 n 个文件中的100个 ID,在进行一次排序,即可得到需求的数据。

小结

首要很感谢内推的那个朋友才有了这次的面试时机,尽管成果不尽人意,可是为自己的学习生长之旅添加了一些精彩。

然后说下这次的面试体会,总得来说,感觉不是很好,由于几回打电话都是在公司上班期间,究竟在公司接到面试电话仍是很欠好的。没有依照约寻母三千里定的时刻点打电话,或许是我触摸的少,不知道其他公司是怎样样的,总觉得这样不太好。

身为一个现在在职三年,作业在深圳这样的大环境下,仍是有很大压力的。曾经上学的时分想着什么时分能月入过万应该就不愁什么的,可是逐渐的发现,及时月入过万也仍是过欠好日子。周围比你凶猛比你强的人多了去了,你能做的就只有不断的学习,不断的前进。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。