博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从循环条件的代码里,我能在面试中甄别程序员是否是高级
阅读量:5896 次
发布时间:2019-06-19

本文共 1358 字,大约阅读时间需要 4 分钟。

    一般来说,工作经验满3后,程序员就达到了高级程序员的年限要求,但能力上是否达到?又如何在面试里短短30分钟里验证程序员是否达到高级程序员的水准?我会那个大家一定用到过的循环语句来作为面试题。

    我们可以通过if…else语句来控制顺序的分支结构,可以通过while,do…while和for来编写循环语句,总之它们都可以控制流程。这里我们来分享下控制流程时的经常会用到的技巧。

    我们来通过一个判断是否闰年的LeapYear.java例子来看下if…else语句的常规写法。判断闰年的条件如下:第一是否能被4整除但不能不100整除,如果是,则是闰年,第二,是否能被400整除,如果是,也是闰年。

    这个需求简单到了极点,但可以小处见大,下面给出一个示例代码。    

1    public class LeapYear {2        public static void main(String args[]) 3        {4                int year = 2016; 5                if ((year % 4 == 0 && year % 100 != 0) || 6                      (year % 400 == 0)){7                      System.out.println(year + " is a leap year.");8                }9                 else{10                    System.out.println(year + " is not a leap year.");11                }12               }13    }

    上文的第5第6行代码里,通过了if语句来判断是否是闰年,如果不是,则走第10行的else分支语句。

    我们看到,这个例子中第5第6行的条件语句里,用到了&&和||来进行and和or操作,请大家注意别把这个和&和|混淆,一个&和一个|是位操作(用的地方不多,所以这里不讲),而两个&&和两个||是布尔操作。

    第二个注意点是,在if(以及后面的while,do…while和for)的条件表达式里,别放太多的&&和||等操作。原因是,我们在做代码测试时,得完全覆盖条件表达式的各种情况,比如在判断闰年的例子里,我们用的测试案例如下。

    1是能被4整除但不能被100整除的年份,比如2016。

    2 不能被4整除的年份,比如2015。

    3 能同时被4和100整除,但不能被400整除的年份,比如1900。

    4 能被400整除的年份,比如2000。

    从中我们能看出,一旦在条件表达式里出现多个&&或||符号,那么所用到的测试案例就得成指数倍上升。所以,一旦当程序员出现类似于下面的写法时,可能就会减分了。

    if (条件1&&条件2&&... 条件n)

    如果业务需求真的那么复杂,我们宁可分解成如下的代码。

    if(条件1 ){  

        if(条件2){}…

    }

    else

    {}

    

转载于:https://www.cnblogs.com/JavaArchitect/p/8124012.html

你可能感兴趣的文章
无法在“EntityFramework”已存在的情况下创建影像复制该文件的解决方案
查看>>
iOS开发UI篇—在UItableview中实现加载更多功能
查看>>
SQL Server删除distribution数据库
查看>>
您还有心跳吗?超时机制分析
查看>>
【DataGuarad】ORA-1153 trying to turn on Flashback for Physical Standby Database 2011-10-
查看>>
[Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
查看>>
如何分析D状态进程
查看>>
kotlin-拉姆达表达式
查看>>
Ant design的Notification源码分析
查看>>
时尚大片,竟是这样p出来的!
查看>>
Python基础(08)Python中整数和浮点数
查看>>
TypeScript学习笔记-类
查看>>
OkHttp工作流程
查看>>
vue 路由监控
查看>>
前端零基础 JS 教学 第二天 02 - day关系运算符与流程控制循环详细讲解 for switch 等...
查看>>
canvas 梦幻的随机例子效果
查看>>
机器学习实战教程(十一):线性回归基础篇之预测鲍鱼年龄
查看>>
Apply、Call、Bind
查看>>
ipv6 relay模式
查看>>
诊断儿童罕见病,多伦多大学 AI 辅助医生调整治疗方案
查看>>