最近参加A轮创业公司跟谁学的面试,比较惨痛,直接没见到面试官。
上来手写两道算法题(很简单):
1.整型逆序输出
面试官限定条件:1.不用字符串;2.不确定数据长度 ;
//整型逆序输出
- (NSInteger)reverseInteger:(NSInteger)integer {
NSMutableArray * array = [NSMutableArray arrayWithCapacity:0];
NSInteger temp = integer;
while (temp) {
NSInteger value = temp%10;
[array addObject:[NSNumber numberWithInteger:value]];
temp = temp/10;
}
NSInteger resultValue = 0;
for (NSInteger i = 0;i < array.count;i++) {
resultValue += [array[i] integerValue] * [self getValue:array.count-i-1];
}
return resultValue;
} - (NSInteger)getValue:(NSInteger)index {
NSInteger reslut = 1;
while (index) {
reslut *= 10;
index--;
}
return reslut;
}
2.字符串匹配算法
这里给出了最简单直接算法,可以根据BM,KMP等算法优化步长,这里直接步长设定为1,考虑重复。 - (NSMutableArray)compareArray:(NSMutableArray)arrayA withArray:(NSMutableArray*)arrayB {
NSMutableArray * array = [NSMutableArray arrayWithCapacity:0];
NSInteger j = 0; //相等次数
for (NSInteger i = 0;i < arrayA.count - arrayB.count; i++) {
j = 0;
for (NSInteger k = 0;k < arrayB.count;k++) {
if (arrayA[k+i] == arrayB[k]) {
j++;
}
else {
break;
}
}
if (j == arrayB.count) {
[array addObject:[NSNumber numberWithInteger:i]];
}
}
return array;
}
总结:
1.临场手写算法还是比较紧张(需要多练习);
2.画图推演是写出算法的绝招;
3.如果给我电脑写就好了;
4.面试官是女的容易分心(轻敌);
5.有思路,但写不出来;
网友评论