金山云java工程师线上面经

  1. 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?
  2. 为什么hashmap1.8后面用红黑树了?红黑树和别的树有什么不同
  3. redis 和 MongoDB 的区别。几个概念对比,还有底层实现。
  4. 并列的并发消费问题
  5. get 和post的区别
  6. redis如何处理分布式服务器并发造成的不一致
  7. Java怎么挖取回收器相关原理
  8. 如果现在有8G内存,一个程序很大,由于还要留下一部分内存供其他程序使用,那么如何控制这个程序使其占用的内存不能超过6G呢?
  9. 如何创建单例模式?说了双重检查,他说不是线程安全的。如何高效的创建一个线程安全的单例?
  10. 复合索引是如何实现的?
  11. 如何实现一个lru
  12. GC 用什么收集器?收集的过程如何?哪些部分可以作为 GC Root?
  13. 操作系统中虚拟存储器的作用,分页从逻辑地址到物理地址的映射过程
  14. 说一下Namenode中维护的元数据中都存储了哪些信息?
  15. 反爬虫的机制,有哪些方式
  16. 如何保存会话状态,有哪些方式、区别如何
  17. 高并发量大的话怎么处理热点,数据等
  18. 写出一种验证11位手机号码的正则表达式。
  19. 讲讲聚类索引和非聚类索引
  20. JDK1.8之后如何链地址法,链表长度是多少的时候会转换成红黑树。
  21. ThreadPoolExcutor的源码看过吗? 没有特别仔细的看,但是他的原理是巴拉巴拉
  22. maven熟吗,如果遇到版本不匹配的问题怎么解决
  23. innDB 和 MyISAM 的区别?
  24. linux的分段有了解吗?
  25. Myql中的事务回滚机制概述
  26. spring中用到哪些设计模式

编程题

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。

请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。

假设每一种面额的硬币有无限个。 

题目数据保证结果符合 32 位带符号整数。

  • 示例 1:

    输入:amount = 5, coins = [1, 2, 5]
    输出:4
    解释:有四种方式可以凑成总金额:
    5=5
    5=2+2+1
    5=2+1+1+1
    5=1+1+1+1+1
    
  • 示例 2:

    输入:amount = 3, coins = [2]
    输出:0
    解释:只用面额 2 的硬币不能凑成总金额 3 。
    
  • 示例 3:

    输入:amount = 10, coins = [10] 
    输出:1