面试算法

       最近一大厂T5级同事面试了几位初级程序员,据说简单的算法都没写出来。不知道是面试恐惧症还是怎么的,我想说的是:其实没必要紧张,面试官首先需要了解你的基础知识是否扎实,会问几道简单的具有逻辑思维的题目,不求你是否有更优解,只求你知道这么回事,脑子里不是空的,这是最低要求;其次是面试者对自己所做所学有钻研的能力,有自己的思维方式。办公室里流传着“授人以鱼不如授人以渔”的经典,所以说这位大神更加注重方法。最后,希望面试者好好准备,切勿心存侥幸。

      下面给出2个简单基础的据说以上没通过的题目(相信你不到1分钟就敲出来了):

       1、阶乘算法

public class FactorialDemo {

    public static void main(String[] args) {
        for (int counter = 0; counter < 10; counter++) {
            System.out.printf("%d! = %d\n", counter, factorial(counter));
        }
        for (int counter = 0; counter < 10; counter++) {
            System.out.printf("%d! = %d\n", counter, factorialLoop(counter));
        }
        
    }

    /**
     * 递归实现阶乘算法
     * 
     * @param number
     * @return
     */
    public static long factorial(long number) {
        if (number < 0) {
            return -1;
        } else if (number == 0) {
            return 1;
        } else
            return number * factorial(number - 1);
    }
    
    /**
     * 循环实现阶乘
     * @param number
     * @return
     */
    public static long factorialLoop(long number) {
        if(number < 0) {
            return -1;
        } else if(number == 0) {
            return 1;
        }
        
        long result = 1;
        for(long i = number; i > 0; i--) {
            result *= i;
        }
        return result;
    }

}

算法定义自己问度娘。(仅提供基础,若有更优算法思路那就更好了)

 

       2、9*9 乘法表实现

public class MultiplicationDemo {

    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + " ");
            }
            System.out.println();
        }
    }
}

运行结果:

 

          

 

针对算法,我自己有点狭义上的认知,算法有数学算法和计算机算法之分。但是现实工作中我们是经常将这两种混为一谈,反正都是解决实际问题的,谁为谁服务都是一样的。但是一到面试上,且不说面试官的技术深度,算法还是有必要再正规一下子了,免得闹笑话,要知道有时候有没有机会获得某个机会也是取决于你有没有认识。

我为了研究算法专门去百度算法入门需要看什么书籍,说法各异,所以我推荐你去看《漫画算法-小灰的算法之旅》,对入门的同学这一本就够了。我不是卖书的,是觉得这本书确实通俗易懂、很有趣。

当面试管问你算法怎么样时,你可以不必懂所有的算法,但是你必须懂基本的算法。

下一篇我列举下工作中常用的算法和面试中常问的算法。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值