蚂蚁金服 后端一面复盘

蚂蚁国际 电话面试

面试官很认真,也很nice,严肃地探索问题答案同时,聊到一些点也会忍不住笑了出来

  1. 你对软件工程的理解?软件工程解决了什么问题?

    把变成从一种单打独斗的行为变成一个团队协作的工程化的事情,提高代码的可维护性和可复用性

  2. 提供了哪些方法来提高可复用性?开闭原则不会导致代码非常臃肿吗?

    面向对象编程,开闭原则。确实是会的,这也是我们滥用设计模式会带来的一个常见问题

  3. 谈谈你对并发编程的理解?

    并发编程提高了计算机资源的利用率,分为并发和并行两种,吧啦吧啦

  4. Java是如何实现的并发编程?这是属于并行还是并发?

    创建Thread线程去执行任务。单核cpu上跑是并发,多核cpu上跑可以是并行?

  5. 并发编程会产生什么问题?

    数据冲突,数据竞争,比较典型的有:写覆盖 -- 多线程执行 i ++操作

  6. 什么是原子化操作?

    要么全部执行,要么全都不执行

  7. 计算机层面是如何使i ++成为原子操作的?

    不了解,只知道Java语言层,可以通过加锁或者原子类的方式实现原子操作

  8. JMM了解吗?

    一开始答成了JVM运行时数据区。纠正后回答了,Java内存模型有一个主内存,还有一个cpu缓存,如果一个普通变量,更改了数据,但是没有及时刷到主内存,或者是其他变量没有从主内存读取新值,也会产生数据错误

  9. 为什么要有cpu缓存?

    提高数据访问的效率,Java语言认为从内存访问数据的速度还不是最快的,能把一部分数据放到cpu缓存上是更好的

  10. 你刚才也提到了JVM运行时数据区中的栈,那你继续介绍一下其他部分吧?

    程序计数器、虚拟机栈、本地方法栈、堆、方法区吧啦吧啦

  11. 对象实例是放在哪的?对象引用是放在哪的?

  12. 除了在栈和堆上,Java还有什么数据是存在这两个区域之外的?

    应该是方法区里的东西吧,里面会包括静态变量、常量、class类文件等等

  13. 了解堆外内存吗?

    不了解

  14. OOM可能有哪些原因造成?

    堆上对象的数量和大小太大,超出了堆的大小, OutOfMemory

    栈上分为两种情况:栈大小为静态时,StackOverflow

    动态时,OutOfMemery

  15. Error和Exception的区别了解吗

    不太了解。在面试官的引导下,给出的回答:Exception可以通过try catch处理,不影响程序的正确执行;Error一般是比较严重的错误,可能导致服务宕掉

  16. mysql的InnoDB存储引擎了解吗?它有哪些特点?(八股文)
  17. 索引用的什么数据结构?B+树的结构特点?(八股文)

  18. B+树如何控制高度?
  19. 开放性问题:从小到大一直坚持的一件事情?

  20. 本来做不好,后来做的好的事情?如何做到的?

  21. 反问:部门情况?

#互联网求职##秋招##Java#
全部评论

相关推荐

02-13 14:30
四川大学 Java
Java抽象带篮子:简历怎么写可以看看我发的帖子,你先照着优化下简历吧
点赞 评论 收藏
分享
评论
1
15
分享

创作者周榜

更多
牛客网
牛客企业服务