美文网首页
蚂蚁金服Java工程师

蚂蚁金服Java工程师

作者: wuhuaguo丶 | 来源:发表于2019-04-26 15:16 被阅读0次

from 公众号:程序员乔戈里 一份刚出炉的蚂蚁金服面经 附答案

  1. ArrayList和LinkedList区别?

  2. 什么情况会造成内存泄漏?
    在Java中,内存泄漏值得就是一些被分配的对象,这些对象具有下面的特点:
    首先,这些对象是可达的,即在有向图中存在通路可以与其相连
    其次,这些对象是无用的,即程序以后不会再使用这些对象。
    如果满足这两个条件,即可判断此为Java程序中的内存泄漏,这些对象不会被GC回收,但却占用内存。

  3. 什么是线程死锁,如何解决?
    线程死锁是因为多线程访问共享资源,由于访问顺序不当所造成的,通常是一个线程锁定了资源A,又想去锁定资源B;另一个线程锁定了资源B,又想去锁定线程A以完成自身的操作,两个线程都想得到对方的资源,造成两个线程都在等待,而无法执行的情况。
    造成死锁有四个必要条件:
    1.互斥条件:所谓互斥就是线程在某一时间内独得资源。
    2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    3.不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺。
    4.循环等待条件:若干进程之间形成了一种头尾相接的循环等待资源关系。
    要解决死锁问题需要从这四个必要条件出发,只要破坏一个必要条件,死锁就不复存在。

  4. 红黑树是什么?怎么实现?时间复杂度?

  5. TCP的三次握手?

  6. 说一下HashMap以及它是否线程安全

  7. 十亿条淘宝购买记录,怎么获取出现最多的前十个 ?

  8. 平时有没有用过Linux系统,怎么查看某个进程?

  ps aux|grep java 查看java进程
  ps aux 查看所有进程
  ps –ef|grep tomcat 查看所有有关tomcat的进程
  ps -ef|grep --color java 高亮要查询的关键字
  kill -9 19979 终止线程号位19979的进程
  1. 说一下Innodb和MySIAM的区别?
    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。
    MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。
    InnoDB不支持FULLTEXT类型的索引。
    InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。
    对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
    DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
    LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
  2. 说一下Java内存模型、jvm内存结构,介绍一下你了解的垃圾收集器
    JVM内存结构 VS Java内存模型 VS Java对象模型

相关文章

网友评论

      本文标题:蚂蚁金服Java工程师

      本文链接:https://www.haomeiwen.com/subject/ftzfnqtx.html