蚂蚁大安全java开发实习面经(2+1)

蚂蚁大安全面经(2+1)

我面试遇到的蚂蚁面试官感觉都挺和蔼的,说话很客气,面试体验非常良好,base:成都

1. 一面(50min)

成都的面试官

  • 自我介绍
  • 你了解设计模式么?
  • 介绍一下单例模式?大概有哪些实现方式及其线程安全问题?(懒汉双重检查锁、懒汉静态内部类、饿汉静态变量直接加载、枚举)
  • 你简单介绍一下其他你用过的设计模式及其思想?(装饰、构造者、代理、工厂、模板、适配器..)
  • 这些设计模式你是怎么用到他们的?或者说怎么被应用?(回答一些经典的JDK代码中的设计模式以及Mybatis中的一些模式应用,当时spring还没怎么看完,所以没有谈在spring中的应用,说错了就画蛇添足了)
  • 谈谈你对设计模式的理解?
  • 你用过哪些语言?
  • 这两种语言的区别是什么?(我说python和java了,然后主要回答了java的特性,python了解的不深入大概说了说)
  • 浏览器访问网址的过程?
  • 服务器响应http请求的具体过程?
  • 线程创建方法有哪些?(回答了三种:继承thread类,runnable接口实现,以及futuretask结合callable接口是实现)
  • 线程怎么终止有哪些方式?(考察直接终止和两阶段终止)
  • ThreadLocal?(我没听清面试官具体问的啥,他就说下一个问题吧..)
  • 问项目?(简历的三个项目全问了一遍motivation和我的贡献)
  • 项目中遇到的困难?
  • 你为什么选我们部门?
  • 你对我们公司有什么了解?

2. 二面(50min)

杭州的面试官

  • 自我介绍
  • 重点介绍一下,你最主要的项目(主要对我的论文项目感兴趣)
  • 项目的困难?(就把会议论文拓展成期刊的拓展当作困难解释了一遍,并如何解决的)
  • 你怎么学习数据结构的?
  • 如何用两个栈实现队列?(剑指offer原题)
  • 上面这个问题如果是并发的压入和弹出,怎么改善?
    • 使用了一个volatile修饰的标志位,结合synchronize关键字实现了一个简单的balking模式(我也不知道对不对,至少看上去没啥问题)
    • 其总感觉还有问题,当时我觉得原始的deque实现的栈依然有线程问题,但是我提了一下,如果这个也要锁的话,这道题就变成手写一个阻塞队列了,面试官没让我写下去了)
  • 10亿个数,找最大1000个怎么做?复杂度怎么算?(最小堆,nlog1000)
  • 使用最小堆这个数据结构的解决方案还能改进么?
    • 当时没想出来
    • 复盘和同学讨论,感觉应该可以分成10分,分别用堆排得到10个top1000,再对10个top1000再排一次,复杂度并没有变化但是并发度提高了10倍
  • 计网TCP你对这个的理解(回答的实现数据可靠性:确认、重传、校验和、拥塞控制、流量控制等等)
  • 如果是支付场景你会选哪一种协议(TCP/UDP)
  • 如果是游戏的话你会选哪一种协议(TCP/UDP)
  • 那这种支付的场景保证安全需要加密,你了解哪些加密算法?
  • 不对称加密的公钥和私钥是如何生成的?
  • 你学习的渠道有哪些?
  • 你做阿里笔试题有遇到过平时做过的题目么?
  • 你觉得你是一个怎样的人?
  • 你的职业规划是什么?

3. HR面(30min)

全是非技术问题,氛围比较轻松,面试官看上去全程挺开心的(我说话很搞笑?🐕)

  • 自我介绍
  • 项目
  • 最有成就的事情
  • 遇到最大的困难
  • 坚持最长时间的事情
  • 你来我们公司相比别的实习生有什么优势
  • 你的优劣是什么
  • 你参加一些生活组织活动么
  • 你现在的学习安排是什么
  • 你大概什么时候能入职?你选择的base地点在哪?

4. 准备面试的感悟

从3月底勉强准备好开始投简历,到现在,发生了各种各样出乎意料的事情(哎~~)

从去年年底开始自学java开发,面了这么多之后感觉半路出家想找到合适的开发实习确实挺难的,很多公司笔试完就没动静了,甚至笔试都不给一点反应(可能成都岗位不多也是原因,哎,心累..)。只能每天都高强度地弥补开发基础,复习八股文。万幸的是,还好最后拿到了第一个offer。后面我应该把已经投出去的流程都走完就不投了。

这里鼓励一下大家,一定不要因为一次面试体验极差或者表现不好就否定自己,真的运气成分还是很大的(教研室周围人都被某鹅厂鞭尸后得出的结论,以上仅是个人观点)。最后希望各位都能拿到满意的offer,大家加油,求职路上、与君共勉!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!