Java知识点总结(一)

最近在负责部门的Java工程师招聘,面试了一个星期,感觉2-3年工作经验的工程师普遍有个特点,基础知识不扎实,主流框架知识停留在应用的阶段,掌握的不够深入,当然,也有可能是高水平的不屑于来我们公司面试,我所说的不能代表整个行业,只是对本周面试工作的一点感想。同时,自己在面试的时候也在琢磨,面试别人需要问些什么,Java开发应该掌握些什么呢?所以现在自己也准备对一些知识点做一下反思和总结。


基本算法(排序)

1.冒泡排序

public static void bubbleSort(int[] a) {
    for (int i = 0; i < a.length - 1; i++)
        for (int j = i + 1; j < a.length; j++)
            if (a[i] > a[j]) {
                int x = a[i];
                a[i] = a[j];
                a[j] = x;
            }
}
// 冒泡升级版
public static void cocktailSort(int[] a) {
    int left = 0;
    int right = a.length - 1;
    while (left < right) {
        for (int i = left; i < right; i++) {
            if (a[i] > a[i + 1]) {
                int x = a[i];
                a[i] = a[i + 1];
                a[i + 1] = x;
            }
        }
        right--;
        for (int i = right; i > left; i--) {
            if (a[i - 1] > a[i]) {
                int x = a[i];
                a[i] = a[i - 1];
                a[i - 1] = x;
            }
        }
        left++;
    }
}

2.插入排序

public static int[] insertSort(int[] a) {
    if (a != null && a.length > 0) {
        for (int i = 1; i < a.length; i++) {
            if(a[i] < a[i-1]){
                int x = a[i];
                a[i] = a[i-1];
                int j= i-2;
                while(j >= 0 && x < a[j]){
                    a[j+1] = a[j];
                    j--;
                }
                a[j+1] = x;
            }
        }
    }
}
// 插入升级版
public static void insertSortDichotomy(int[] a) {
    for (int i = 1; i < a.length; i++) {
        int get = a[i];
        int left = 0;
        int right = i - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (a[mid] > get)
                right = mid - 1;
            else
                left = mid + 1;
        }
        for (int j = i - 1; j >= left; j--) {
            a[j + 1] = a[j];
        }
        a[left] = get;
    }
}
// 插入排序-希尔排序
public static void ShellSort(int[] a) {
    int h = 0;
    while (h <= a.length) {
        h = 3 * h + 1;
    }
    while (h >= 1) {
        for (int i = h; i < a.length; i++) {
            int j = i - h;
            int get = a[i];
            while (j >= 0 && a[j] > get)
            {
                a[j + h] = a[j];
                j = j - h;
            }
            a[j + h] = get;
        }
        h = (h - 1) / 3;
    }
}

3.选择排序

public static int[] selectSort(int[] a) {
    if (a != null && a.length > 0) {
        int min = 0;
        for (int i = 0; i < a.length-1; i++) {
            min = i;
            for (int j= i+1; j< a.length; j++) {
                if (a[min] > a[j])
                    min = j;
            }
            if (min != i) {
                int x = a[min];
                a[min] = a[i];
                a[i] = x;
            }
        }
    }
}

未完待续

【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;【运营】运维艄公,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;【体验设计】兜兜,2435632247@qq.com;
【iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【Java】首席工程师MR_W,feixue300@qq.com;【测试】土镜问道,847071279@qq.com;
【数据】fox009521,42151960@qq.com;【安全】保密,你懂的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值