入行程序员3年,不会写排序算法,我被面试官婉拒了

码龄3年的小王 , 最近打算换个工作 。
一直在互联网创业公司做JAVA开发的他 ,
虽算不上技术大佬 , 但已经积累了非常丰富的项目经验 。
入行程序员3年,不会写排序算法,我被面试官婉拒了文章插图
前两天 , 小王到某知名互联网公司面试 。
第一轮笔试结束后 , 他取得来了不错的成绩 , 顺利进入到第二轮的业务面 。
可在第二轮的时候 , 面试官的一道选择排序算法题 , 让小王一脸懵逼 。
面试官见小王久久未能动笔 , 就草草结束了面试 。
离开时面试官对小王说 ,
你的基础知识还需要好好加强 , 这个选择排序算法我大学参加计算机等级考试时就会了 。
入行程序员3年,不会写排序算法,我被面试官婉拒了文章插图
面试中考察算法还是较为常见的 , 而选择排序法是一种不稳定的排序算法 。
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素 , 存放在序列的起始位置 , 然后 , 再从剩余未排序元素中继续寻找最小(大)元素 , 然后放到已排序序列的末尾 。 以此类推 , 直到全部待排序的数据元素排完 。
入行程序员3年,不会写排序算法,我被面试官婉拒了文章插图
我们来看用java编写的选择排序算法代码
/*** 选择排序** @param arr*/public static void selectionSort(int[] arr) {int min;int length = arr.length;for ( int i = 0; i < length; i++) {// 初始化未排序序列中最小数据数组下标min = i;for ( int j = i + 1; j < length; j++) {// 在未排序元素中继续寻找最小元素 , 并保存其下标if (arr[j] < arr[min]) {min = j;}}// 将未排序列中最小元素放到已排序列末尾if (min != i) {swap(min, i, arr);}}}/*** 交换顺序** @param x* @param y* @param arr*/private static void swap(int x, int y, int[] arr) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}
调用实例
public static void main(String[] args) {int arr[] = { 2, 17, 2, 11, 7, 6, 19, 9, 14, 20, 17, 13, 14, 2, 10};System.out.println(String.format( "original array = %s\n", Arrays.toString(arr)));selectionSort(arr);System.out.println(String.format( "sorted array = %s\n", Arrays.toString(arr)));}
最后输出结果:
入行程序员3年,不会写排序算法,我被面试官婉拒了文章插图
其实选择排序法是很基础的算法 , 在实际编程工作中可以在基础库里找到 , 不需要自己写 。
面试中以这个来考察求职者的能力 , 属实有点欠妥 。
【入行程序员3年,不会写排序算法,我被面试官婉拒了】毕竟 , 有经验的程序员是不会重复发明轮子的!