面试小记-2-找出二维数组里连续的'A'

前两天面了一个公司,大门就很冷清,敲了半天门一个不是接待的男生过来询问,报上公司名他竟然不知道,他有点尴尬的去问了同事后连“哦”了几声领我去会议室呆着。本来一看大门这么冷清就不太想敲门的,进来后发现竟然连职员都不知道这招聘公司,大厅的工位也空着5/6,心里就知道这又是一次我来面试面试官的经历。。。还没笔试题,这种单位一般都比较随性,是不理想的类型。

也罢,既来之则安之。打了几分钟瞌睡后一长相有些猥琐的微胖男进来了,先半分钟扫了下我有3页的简历,然后开始扯。一上来就问我http状态码有哪些,我戳,我是面OC的好么。。。不过无所谓了反正我也不太想来,就瞎扯淡404找不到文件,500以上表示正常,200以上表示失败(回来查了下自己都笑了)。猥琐男听不下去了说算了我给你出道题吧。

正题:一个5x5二维数组填满了A到E,其中A是有连在一起的也有隔离的,请给出一个算法找出所有相邻的A。

我一看这不挺简单么说就深搜嘛,小胖立马把题目改了下,由原来的单条上下层A链路修改为有同层相邻的情况。这样只深搜的话到同层第二个A时会递归会到第一个A导致死循环。我也看出了他修改题目的意思,想了一下只想到了肯定要标记,但没有给出具体的实现。过了2分多钟不到3分钟,小胖不耐烦了说好吧你可以回去好好想想。(我特么就最烦这种现场临时看简历临时出题的,既不会审阅你简历也不会给你多少时间作答,除非特么我做过才能立马给出答案;另外我一出这单位就想到了用一个数组记录路径不就行了,每个A都与数组里的合格A比较就可消除死循环)。最后,他问了下sqlite有什么数据类型。我嗯?心想怎么都问这种问题。我只记得用过数字、字符类型,就说了这俩。小胖微微一笑说行了今天到这吧,你不是我们要找的人,回吧。

于是我回来写了这篇文章,在写的过程中翻了下网页再回忆了下,发现这哥们问的东西没一个跟OC有关,网上有哥们说现在做iOS前端的有好多是php转的,突然我明白了,这胖子原来是做php的吧,怪不得问的问题总感觉跟自己的领域不对口啊,应该是他自己都不太懂OC,只能用php的东西来压我。于是我释怀了,要是互换立场我来面他,这胖子不被我弄死。算了自己运气不好,来的时候主面在开会,小胖也是被委派来的,水准自然不能跟大哥比。

另外,我觉得这种直接对侃的面试一般都是招拿来就用的人,所以问的东西都跟当前项目紧密结合,不会关注你的其他东西,而且一般都小公司这样做。前两天那个稍大的就是面试题先刷,还有好几道逻辑推理这种题,就比较关注面试者本身的逻辑能力和素质,这种类型的单位是比较可取的。

最后,这道编程题回来没用多久就鼓捣出来了,测了几下应该没问题,写上来备案:

void aux_consquce(int (*num)[5], int column, int row, int **table, int *end) {
    if (row < 0 || column < 0 || row >= 5 || column >= 5 || num[row][column] != 'A') {
        return;
    }
    if (num[row][column] == 'A') {
        bool isIn = false;
        for (int i = 0; i < *end; i++) {
            if (table[i] == &(num[row][column]))
                isIn = true;
        }
        if (!isIn) {
            table[*end] = &(num[row][column]);
            *end += 1;
            printf("(%d, %d) ", row, column);
        }
        else
            return;
    }
    aux_consquce(num, column - 1, row, table, end);
    aux_consquce(num, column, row - 1, table, end);
    aux_consquce(num, column + 1, row, table, end);
    aux_consquce(num, column, row + 1, table, end);
}
void consquceAinDimension(int (*num)[5], int column, int row) {
    int **table = (int **)calloc(column * row, sizeof(int *));
    int end = 0;
    aux_consquce(num, column, row, table, &end);
    
    free(table);
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值