思路:
将数组二分,用数组中位数和x对比,如果中位数大于x,则去数组的左半边找,反之去右半边;
比方说数组是{1, 2, 3, 4, 5, 9},x为9
第一次:我们用数组中位数,即3(偶数的话选择中间两个中较小的)和9对比,9比3大,所以我们要去右半边找,此时数组为{4, 5, 9},以此递归,直至找到9=9;
实现:
public class HalfFind {
public static void main(String[] args) {
System.out.println(“下标为:” + half(new int[]{1, 2, 3, 4, 5, 9}, 9, 0, 5));
}
//需要指定查找数组的边界left和right,如果不这样的话,new个新数组也能实现,但是浪费内存
public static int half(int[] ints, int x, int left, int right) {
if (ints == null || left > right || x < ints[left] || x > ints[right]) return -1;
int center = (right + left) / 2;
System.out.println(“此次折半中位数下标为:” + center);
if (ints[center] == x) {
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料
有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。
直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。