蚂蚁春招实习面经+内推

前言

很多人在春招有一个误区,觉得大公司面试机会只有一次,一定要准备的充足才去投简历。但是面试不像考试,不仅仅考察知识的掌握程度,还需要临床应对的经验。我当时找工作时,投的第一份简历就是蚂蚁,很幸运第一次面试就遇到了我现在的师兄,他在面试过程中和我分享了很多学习、面试以及后续工作的经验。正是这些经验帮助我顺利拿到了各大厂的offer。因此,建议大家在做好一定的准备后,尽早开始投简历,积累面试经验。而且大家永远不用担心面试只有一次机会,我身边的很多同学都在第一次面试挂了后拿到了其他部门或其他大厂的offer。

一面

  1. 线程池相关参数的意义
  2. classloader双亲委派机制
  3. java sleep和wait的区别?在线程持有锁资源时sleep和wait有什么区别
  4. hashMap和concurrentHashMap区别
  5. java的GC机制,CMS gc过程概述 有几次stop the wolrd?
  6. java进程突然挂了,怎么排查,有哪些日志可以看?

比如说配了 -XX:+HeapDumpOnOutOfMemoryError启动参数后,java进程挂了后会自动dump出一份java堆文件,用以分析。

  1. 两个线程改变同一个变量,第一个线程set 50 第二个线程set 60 为什么第一个线程读到是50,有几种情况

这里其实是想考,java内存模型中每个线程有自己的本地内存,但是我一直没有get到点,直到面试官用CAS问题来引导我才答出来,这里就体现面试经验的重要性了。

  1. spring启动过程
  2. tcp三次握手和四次挥手
  3. ***的原理

VPN、加密隧道

  1. 操作系统进程创建过程。

fork函数

  1. 硬中断和软中断是什么
  2. 操作系统的中断和java线程中断的区别,java线程中断是怎么实现的?
  3. 网络的数据是怎么经过网卡到内存里的

这个过程和中断有关,可以参考这个博客https://blog.51cto.com/noican/1361087

  1. BIO和NIO操作系统层面是怎么实现的?如果一个BIO服务端建立了100个链接会有几个线程?NIO呢
  2. 进程间的通信,管道是什么?什么是信号量?socket是怎么实现的?
  3. 页面置换算法有哪些?
  4. 进程抢占和上下文切换
  5. 不同优先级任务调度的设计

思路是参考操作系统进程调度算法

  1. 设计下微博中点赞关注拉黑功能
  2. 数据库中排它锁和共享锁有什么区别
  3. mysql为什么要有自增ID?
  4. 磁盘预读是怎么实现的

二面

  1. sychornized锁可重入吗?可重入的含义是什么?
  2. 如果控制对共享资源的并发访问?
  3. AtomicLong和普通的Long使用有什么差别,原理是什么?
  4. volatile的原理和使用
  5. 内存的分页机制是什么?
  6. 一个份很大的日志文件,文件里记录了很多学生的成绩,找出排名前1000名成绩的学生。算法时间复杂度和空间复杂度

小顶堆实现

  1. 数据库并发操作,乐观锁实现和悲观锁实现
  2. http和https的区别,https能被拦截嘛?

在线编程题

设计一个并发安全任务调度器,三个方法、插入任务、根据任务优先级获取并删除任务、根据任务插入顺序获取并删除任务


后面还有两轮技术面和一轮hr面,基本都是聊人生,就不记录了。

最后打个广告

蚂蚁集团2021届实习校招开始了!
我们是蚂蚁集团-大数据部,我们组负责的业务是采集外部数据,赋能集团业务,团队业务价值高,个人成长也很快。
我们团队有白富美主管小姐姐、跨级晋升技术大佬、养生达人老中医、人生赢家双胞胎爸爸,还有专职活动官和水果官,团队氛围很融洽,都是在欢声笑语中打代码。
今年集团全面扩招、有真海量HC,加入内推答疑群或者直接戳我,可以帮忙完善简历,全程跟踪面试状态。
提前面试不锁简历,买不了吃亏也买不了上当,抓紧上车!
欢迎加入 蚂蚁大数据2021校招答疑群 里面不仅有大佬在线答疑、指导建立,还有校招答疑知识库不定时更新大佬们的学习、求职和工作经验哦
入群可以扫描文档底部二维码
https://www.yuque.com/docs/share/7f4aa4fb-401e-4d99-a2ea-fbc1e3f7f06e?# 《19年实习春招面经》
#内推##春招##校招##蚂蚁集团#
全部评论
哇,很细的问题记录,  不知道有没有思路可以分享一下呢
2 回复
分享
发布于 2021-02-21 20:05
最后编程题思路有吗
点赞 回复
分享
发布于 2021-02-21 21:56
百信银行
校招火热招聘中
官网直投
可重入锁的含义是某个线程获取锁后,可以再次获取锁,实现是为每个锁对象关联一个计数器。比如一个方法用了synchronized关键字修饰,这个方法调用了同一个类的其他方法,这个方法也用了synchronized关键字修饰,可重入锁就避免了死锁出现。
点赞 回复
分享
发布于 2021-02-21 22:03
如果控制对共享资源的并发访问? 1 ThreadLocal 共享变独享 2 独占锁 读写锁 3 并发变串行 用阻塞队列
点赞 回复
分享
发布于 2021-02-21 22:06
volatile的原理和使用 原理 1 解决并发编程的可见性和有序性问题 2 CPU引进高速缓存缓解内存与CPU之间的速度差异,出现缓存一致性问题,解决缓存一致性问题引进锁总线或者锁缓存行,锁缓存行需要配合缓存一致性协议比如mesi协议 。为了优化mesi协议的效率问题,引进了写缓冲和无效队列,产生了有序性问题。为了解决有序性问题,产生了内存屏障。volatile在操作系统底层是内存屏障原语 。解决可见性和有序性都依赖于内存屏障的使用。 使用 volatile关键字用于修饰类变量或者成员变量,可以修饰基本数据类型和引用类型和数组类型。
点赞 回复
分享
发布于 2021-02-21 22:15
内存的分页机制是什么? 操作系统还是数据库?
点赞 回复
分享
发布于 2021-02-21 22:16
一个份很大的日志文件,文件里记录了很多学生的成绩,找出排名前1000名成绩的学生。算法时间复杂度和空间复杂度 思路:题目说到排名前1000名,那么不要求全部有序,想到堆排序。
点赞 回复
分享
发布于 2021-02-21 22:21
AtomicLong和普通的Long使用有什么差别,原理是什么? 差别 1 AtomicLong是juc的一个原子类, 有一个long型的变量value,用volatile修饰,可以用于实现原子安全操作,比如cas,累加。 原理 AtomicLong底层是Unsafe类,很多方法都是直接调用Unsafe类操作进行操作,比如cas。另外提供了set方法和get方法用于value变量读写的可见性
点赞 回复
分享
发布于 2021-02-21 23:48
数据库并发操作,乐观锁实现和悲观锁实现 数据库本身是支持并发的,不需要显式加锁 乐观锁: 版本号 SQL后加条件where 字段=值 悲观锁: 1 读锁 lock in share mode 2 写锁 for update
点赞 回复
分享
发布于 2021-02-22 00:07
数据库中排它锁和共享锁有什么区别 1 排他锁只允许一个事务或者线程占有资源,共享锁指读写锁,读读共享,读写互斥 2 delete/update/insert加排它锁,select lock in share mode加共享锁,select for update加排他锁
点赞 回复
分享
发布于 2021-02-22 00:13
想问下楼主的项目都有什么呢?
点赞 回复
分享
发布于 2021-02-22 00:51
有算法吗
点赞 回复
分享
发布于 2021-02-22 08:46
请问有蚂蚁大安全部的安全岗校招实习讨论群吗
点赞 回复
分享
发布于 2021-02-25 22:12
请问有几面?
点赞 回复
分享
发布于 2021-03-09 00:01

相关推荐

11 63 评论
分享
牛客网
牛客企业服务