7. 找出数组中第一个出现 2 次的数,
8. 求 1-N 中数字 1 的个数。
9. 判断一个数是不是丑数;
10. 求第 K 个丑数;
11. 10w 行数据,每行一个单词,统计出现次数出现最多的前 100 个。
12. 一个文本文件,给你一个单词,判断单词是否出现。
13. 一进去要求敲代码二叉排序树的插入、删除及查找
14. 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网
站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为 2 亿;积分为
非负整数,且小于 100 万;
15. 判断一棵二叉树是否是 BST。
16. 一副扑克 54 张牌,现在分成 3 份,每份 18 张,问大小王出现在同一份中的概率是多少;
17. 50 个白球 50 个红球,两个盒子,怎么放让人随机在一个盒子里抽到红球概率最高。。。
这个就是一个盒子放一个红球,另一个盒子放 99 个球。
18. logN 查找一个有序数组移动后类似 4 5 6 7 1 2 3 里面的一个数
1. 0 ~ n 连续 n + 1 数,现在有一个长度为 n 的数组存放了上面 n + 1 个数的其中 n 个,找出
哪一个数没有被放进数组
19. 将 M 个平均长度为 N 的有序队列组合成一个有序队列
20. 10 亿条短信,找出前一万条重复率高的
21. 对一万条数据排序,你认为最好的方式是什么
22. 假如有 100 万个玩家,需要对这 100W 个玩家的积分中前 100 名的积分,按照顺序显
示在网站中,要求是实时更新的。积分可能由做的任务和获得的金钱决定。问如何对着
100 万个玩家前 100 名的积分进行实时更新?
- 除了前 100 名,后 100W-100 名玩家的积分,让变化的积分跟第 100 名比较,如果比第
100 名高,那就替换的原则。
## Java 基础
1. Java 的优势
- 语法简单
- 跨平台
- 当开发规模膨胀到一定程度,Java 在规范、协作和性能调优上还是占有很大优势,在大
型应用,尤其是企业应用上,Java 的地位仍然难以撼动
2. boolean 占几个字节
1. 如果 boolean 变量在栈上,那么它占用一个栈单元(32-bits)
1. 如果在堆上,那么就跟 JVM 的实现有关了
1. 在 Oracle 的 JVM 实现,boolean[] 中每个元素占用一个字节(8-bits)
3. Java 访问修饰符权限的区别;
- `public` 所有类都可访问
- `protected` 只允许包内、子类访问。
- `默认` 只允许包内访问
- `private` 只允许类内访问
4. String 是否可以继承, “+” 怎样实现?
- `String` 是 `final` 类,不可继承。