最近在负责部门的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;【安全】保密,你懂的。