今天面试遇到的情况
今天面了一家做笔记的厂,是手写代码面,第一个题就是奇偶排序的问题,题目如下
input: [2,1,5,7,4,9,8,5,6] output: [1,5,7,9,5,2,4,8,6]
输入一个整数数组,期望输出的数组里,奇数在前边,偶数在后边
我想这不简单么,我有好几种办法可以实现这个功能,然后我就写下了如下代码
function filter(originArray) { let oddArray = []; let evenArray = []; originArray.forEach(item => { if (item % 2 == 1) { oddArray.push(item); } else { evenArray.push(item); } }) return oddArray.concat(evenArray); }
其实我还有以下办法可以实现
function filter(originArray) { originArray.sort((a, b) => { return b % 2 - a % 2; }) return originArray; } function filter(originArray) { return originArray.filter(a => { return a % 2 == 1; }).concat(originArray.filter(b => { return b % 2 == 0; })); }
但是我没想到,面试官其实是想考察双指针排序的变种,我对这种双指针得问题本来就不熟,就卡在这问题上搞了 20 来分钟,整得我都没脾气了,汗都整出来了,后面又考察了一个问题,我只知道原理,让我手写又一次写错,就尴尬地结束了这一次面试。
可能刚好对方的实际项目中需要解决这类算法的问题,面试没面好是我的问题,
我想说的是,对于一个问题,没能按面试官想的方式解决,是不是就算活不好了?