首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从循环条件的代码里,我能在面试中甄别程序员是否是高级

我会那个大家一定用到过的循环语句来作为面试题。     我们可以通过if…else语句来控制顺序的分支结构,可以通过while,do…while和for来编写循环语句,总之它们都可以控制流程。...这里我们来分享下控制流程时的经常会用到的技巧。     我们来通过一个判断是否闰年的LeapYear.java例子来看下if…else语句的常规写法。...我们看到,这个例子中第5第6行的条件语句里,用到了&&和||来进行and和or操作,请大家注意别把这个和&和|混淆,一个&和一个|是位操作(用的地方不多,所以这里不讲),而两个&&和两个||是布尔操作。...原因是,我们在做代码测试时,得完全覆盖条件表达式的各种情况,比如在判断闰年的例子里,我们用的测试案例如下。     1是能被4整除但不能被100整除的年份,比如2016。    ...2 不能被4整除的年份,比如2015。     3 能同时被4和100整除,但不能被400整除的年份,比如1900。     4 能被400整除的年份,比如2000。

84130

今天写出一个十分弱智的bug!

,要在后面加一些where条件,limit操作不能在嵌套查询里面加了,于是乎把limit 0,10提出来放到最外面,结果order by还留在里面。...我当时想嵌套查询出来的record表已经按timestamp字段逆序排列了,再left另一张表,最终再limit出来的结果应该也是逆序的,但结果却很打脸,是正序的。...首先控制变量,代码回滚到之前,把后来加的各种逻辑都去掉,还原到上述sql,只把limit 0,10移到最后,发现timestamp是正序的,那么问题应该就出在这里了,与后来加的其他逻辑没有关系。...还有个问题,上述去掉limit后,最终不是按left join主表的顺序输出,按照我们常理想象,mysql是循环主表的记录去关联另一张表,那么输出的顺序应该还是主表的顺序啊,但结果却是按另一张表的字段排序的...我猜测,如果没有limit操作,反正全部都要join,可能mysql会对循环逻辑做一些优化,不一定要按主表来循环,思想类似于java编译中的重排序,也对应了上面截图中的那句话。

47530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    三篇文章让你彻底学会C语言中的分支和循环语句——分支语句

    语句和语句的分类 C语言的代码是由一条一条的语句构成的,在C语言中,语句可以分为以下五类: 空语句 表达式语句 函数调用语句 复合语句 控制语句 在这里我们要学习的分支和循环语句就属于控制语句。...这里我来简单的介绍一下控制语句: 控制语句用于控制程序的执行流程,以实现程序的各种结构方法(C语言支持的三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。...printf("输入的数字是负数\n"); } return 0; } 在这里else语句中又嵌套了if语句,并且在这里还有一个简化的写法,修改后的代码如下: #include...: case和后面的数字之间必须有空格 每一个case语句中的代码执行完成后,需要加上break,才能在执行完这条case语句后直接跳出switch语句 3.2 switch 语句中的break 如果我将刚才起那面代码中的...break去掉会出现上面情况呢?

    10010

    最近实现的一个分离文章内容功能,挺有意思,分享一下

    相信看到这里的读者都能清楚知道上面谈的是什么,但愿我的文字能通俗易懂,文字多了,我也记不住,累赘。...你会想,有没有可能在正则匹配就把掺杂的标签去掉。那这个是肯定可以的,代价就是高超的正则匹配式子,且现在还没考虑内容的情况。 为什么非要去掉标签呢?...去掉了有以下好处: 减少搜索的 o(n) 方便显示 采用逐行处理的时候 我们从文件中读出第一行 ### 第一种标题,replace 函数处理掉 ### 等符号,这里循环处理即可去掉指定的任何符号。...> 如果去掉内容的其他无用标签,或者要求特定保存一些,等情况,多批次的正则过滤将会是花销巨大的操作。...解决流程: 无论是正则匹配方案 还是 逐行处理方案,这两种我都写了对应的引擎函数,通过且以后者运行谓之0 bug。实现的时间加起来不足 3.5 小时。后者尤其快,下面我仅主要介绍后者的解决流程。

    51560

    萌妹子Python入门指北(四)

    在上一篇文章中我们讲到了选择和循环,这次我来讲下选择和循环语句更高级的用法。提前剧透下,本次课程没有新内容,只是对上篇文章的回顾和进阶,选择和循环语句的嵌套使用。   ...首先我们来举个例子说明循环语句是如何嵌套判断语句的。 我这里抛出一个简单的问题————输入1-9里面所有能被3整除的数!如果你程序写对了,很明显只会在屏幕上输出 3 6 9这3个数字。...for n int range(1,10): if n%3 == 0: print n   多层循环嵌套,我觉得最好的例子就是乘法表了,想想看我们小学学的成乘法表是什么样的?...#这里暂时省略具体内容   我们只需要在上面加一层对于行的循环就可以了,我猜如果你没学过编程的话,这个地方肯定很难理解咯。哎,看我我也没办法,只能奉上一句心灵鸡精『多思考』。...print ""   告诉大家一个不幸的消息,本篇文章内容到这里就结束了,最后再抛几个问题给大家思考下。   1.if可以嵌套for吗?可以嵌套while循环吗?   2.难道只能嵌套两层吗?

    44710

    业务代码如何才能不再写出大串的ifelse?

    嵌套代码 CR 如下分发我刚写完的一篇博客的案例: 逻辑很简单,但有多层缩进,for 循环一层,里面有俩 if ,又多加两层。若逻辑再复杂点,缩进岂不是像啤酒肚一般越来越大?...从for循环入手,通常for循环处理集合,而循环里处理的是该集合中的元素。...else 可以不写吗? 可以! 根据文章信息进行收费: 不用 else,简单方式就是让每个逻辑提前返回,类似卫语句: 业务简单的代码,这重构还很轻松,但对复杂代码,就得上多态了。...嵌套、else 语句,都是坏味道,本质上都在追求简单,因为一段代码的分支过多,其复杂度就会大幅度增加。...引入 UserLevel 模型,消除 switch: 前面代码即可去掉 switch: switch 其实就是一堆“ if…else” 的简化写法,二者等价,所以,这个重构手法,以多态取代的是条件表达式

    81210

    详解分支和循环结构(剖析if语句,switch语句,while循环,for循环,do-while循环)

    if 利用嵌套if可以实现多重判断,结构如下: if(表达式1) 语句1; else if() 语句2; else 语句3; 悬空else 这里就随便举一个例子吧: 可以看出什么都没有打印...则执行default switch语句中的case和default的顺序问题 在 switch语句中 case ⼦句和 default⼦句有要求顺序吗?...default只能放在最后吗?其实,在 switch 语句中 case语句和default语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。...n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。...到这里我们就能分析出来, continue可以帮助我们跳过某⼀次循环continue 后边的代码,直接到循环的判断部分,进行下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成

    23910

    Python 循环的本质就是一段代码懒得重复写

    所谓掌握的意思就是现在你需要好好的打一打代码。 5.3 for 循环补充知识 5.3.1 for 循环嵌套 一个循环中的代码块嵌套另一个循环称为循环的嵌套,在编写循环嵌套代码的时候需要注意。...如果想去掉 print 函数自带的换行符,需要使用 end 参数,即 print("待输出内容",end=" ")。...放心,虽然我详细的说了一遍流程,能悟了的同学就地就悟了,看不懂还是看不懂,这个地方确实很难(难吗?)...5.3.2 break 终止循环 终止循环你就这么理解,当满足某个条件的时候,我不想循环了,这就是 break 的使用场景,当满足某个条件这肯定用到的是 if 语句。...,我都要执行一次") 在这里其实有个知识点需要补充下,就是代码配对的问题,啥叫配对,if 和 else 就是一对,为什么会有这种说法呢,参见下述代码: if 条件: pass if 条件: pass

    65430

    #抬抬小手学Python# Python 循环的本质就是一段代码懒得重复写

    for 循环补充知识 -------------- for 循环嵌套 一个循环中的代码块嵌套另一个循环称为循环的嵌套,在编写循环嵌套代码的时候需要注意。...如果想去掉 print 函数自带的换行符,需要使用 end 参数,即 print("待输出内容",end=" ")。...放心,虽然我详细的说了一遍流程,能悟了的同学就地就悟了,看不懂还是看不懂,这个地方确实很难(难吗?)...break 终止循环 终止循环你就这么理解,当满足某个条件的时候,我不想循环了,这就是 break 的使用场景,当满足某个条件这肯定用到的是 if 语句。...,我都要执行一次") 在这里其实有个知识点需要补充下,就是代码配对的问题,啥叫配对,if 和 else 就是一对,为什么会有这种说法呢,参见下述代码: if 条件: pass if 条件:

    54440

    Python 循环的本质就是一段代码懒得重复写

    所谓掌握的意思就是现在你需要好好的打一打代码。 5.3 for 循环补充知识 5.3.1 for 循环嵌套 一个循环中的代码块嵌套另一个循环称为循环的嵌套,在编写循环嵌套代码的时候需要注意。...如果想去掉 print 函数自带的换行符,需要使用 end 参数,即 print("待输出内容",end=" ")。...放心,虽然我详细的说了一遍流程,能悟了的同学就地就悟了,看不懂还是看不懂,这个地方确实很难(难吗?)...5.3.2 break 终止循环 终止循环你就这么理解,当满足某个条件的时候,我不想循环了,这就是 break 的使用场景,当满足某个条件这肯定用到的是 if 语句。...,我都要执行一次") 在这里其实有个知识点需要补充下,就是代码配对的问题,啥叫配对,if 和 else 就是一对,为什么会有这种说法呢,参见下述代码: if 条件: pass if 条件: pass

    64120

    c语言从入门到实战——分支和循环

    分支和循环 前言 C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实 现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合...; else if(num > 0) //这里的if 相当于嵌套在els语句中,形成了嵌套结构 printf("输入的数字是正数\n"); else printf("输入的数字是负数\n");...和default的顺序问题 在 switch 语句中 case 子句和 default 子句有要求顺序吗?...,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如: n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。...循环的嵌套 前面学习了三种循环 while , do while , for ,这三种循环往往会嵌套在一起才能更好的解决问题,就是我们所说的:循环嵌套,这里我们就看一个例子。

    17310

    掀开SQL的神秘面纱,将优化进行到底

    编辑手记:有这样一条奇怪的SQL,返回结果不足10行,逻辑读达到1.2w,存在索引却走多次全表扫描,如何揭开它神秘的面纱拯救系统性能,答案在这里,你不可错过!...3)ID为2的执行计划路径出现了FILTER,且3,和6为其子路径,如果FILTER有两个及两个以上的子路径,那么他的执行原理将类似于嵌套循环,id号最小的子路径如果返回行数较多,可能会导致多次执行id...2)很多设计不合理的业务,没有添加合适的索引,可能会导致全表扫描,在某些情况下走全表和走索引产生性能的消耗根本不是一个数量级的。 3)filter和嵌套循环类似,可以看做是升级版的嵌套循环。...而嵌套循环,oracle 从较小结果集中读取一行,然后和较大结果集中所有数据逐条进行比较,如果符合规则,就放入结果集中,然后去较小结果集的下一条数据继续进行循环,直到结束。...嵌套循环只适合输出较少结果集或者用于快速输出结果集。 4)某些时候符合我们限制条件的条数过多,但是我们用rownum进行条数限制之后可能会改变其选择执行计划。

    763120

    大家都知道递归,尾递归呢?什么又是尾递归优化?

    我得知这个概念,最开始还是因为很多年前一次面试,面试官问我“你知道什么是尾递归吗?”,我以为是“伪”递归,难道是假的递归???当初我也是懵逼状态(当初面试官忍住没笑也是厉害了 )。...因为这种写法,本质上还是有多层的函数嵌套调用,中间仍然有压栈、出栈等占用了存储空间(只不过能比前面的方法会省部分空间)。...原因就是因为编译器帮助做了尾递归优化,可以打开汇编代码看看(这里就不展示 C++的了)。后面我用大家比较熟悉的 JVM based 语言 Scala 来阐述这个优化过程。...我们来看看生成的字节码有什么不同。 ? 包含尾递归优化的字节码,直接 goto 循环。 ? 禁用尾递归优化的字节码,方法调用。 从上面可以看出,尾递归优化后,变成循环了(前面的 C++ 类似)。...好了,尾递归咱们就了解到这里。个人看法,我们知道有“尾递归”这个点就好了,有时候我们写递归就是为了方便,代码可读性好,如果确实是出于性能考虑,我们可以自己用迭代的方式去实现,不依赖于具体的编译器实现。

    1.5K30

    三篇文章让你彻底学会C语言中的分支和循环语句——(二)循环语句

    前言 学完了分支语句,下面我们来进一步学习循环语句。 在C语言中,循环语句有三种:while循环,for循环,以及do…while循环。下面我将一一介绍它们 各自的用法以及特点。...题目解析: 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4 要想去掉n的最低位,找出倒数第⼆位,则使用 n=n/10 操作就可以去掉最低位的,如:n=1234...循环的嵌套 前面学习了三种循环 while , do while , for ,这三种循环有时候会嵌套在一起才能更好的解决问题,就是我们所说的:循环嵌套。...这里我们看一个例子: 找出100~200之间的素数,并打印在屏幕上。 注:素数又称质数,只能被1和本身整除的数字。...题目解析: 要从100~200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。

    7210

    分支和循环(上)

    5.2 switch语句中的break 前面的代码中,如果我们去掉case语句中的break,会出现什么情况呢?...5.4 switch语句中的case和default的顺序问题 在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?...循环的嵌套 前面学习了三种循环 while , do while , for ,这三种循环往往会嵌套在一起才能更好的解决问题,就是我们所说的:循环嵌套,这里我们就看一个例子。...要从100~200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。 2....写一个关机程序: 1.程序运行起来的时候,就开始倒计时60秒关机 2.但是如果输入“我是猪”,就取消关机 system—库函数,可以执行系统命令 需要一个头文件stdlib.h。

    5610

    太菜了吧》(19)巩固开始,数字1、2、3、4能够组成多少个 3 位数的不同的排列

    太菜了吧》(13)(9*9 乘法表)寻找电脑中的盲盒彩蛋——for 循环与循环嵌套 九九乘法表 《看聊天记录都学不会C语言?太菜了吧》(12)循环有多容易?...,是不是有 3 个位置,这一次循环可以当做百位的数字吗?...我现在问你,你还记得循环嵌套吗? 小媛:记得,你想说啥? 小C:说一下循环嵌套是怎么回事。...小媛:循环嵌套就是一个循环在另外一个循环里面,外面循环循环一次,内部循环执行到的时候就会等待内部的循环结束后才会执行完本次循环。 小C:你写一个代码出来看看。 小媛:嗯,那我随便写一个就是下面这个。...,你忘记了吗,我们是数字 1、2、3、4 这4个数组的组合,每个数只能在位置上出现一次,该怎么做呢?

    35520

    太菜了吧》(3)变量:我大哥呢?$:小弟我罩着你!

    太菜了吧》(10)C#偷懒的开始永无止境的循环?—— 循环 《看聊天记录都学不会C#?太菜了吧》(9)有一些人在学习编程的时候总以为代码是死板的—— if 嵌套 《看聊天记录都学不会C#?...小媛:是这样吗? Console.WriteLine(a,b); 小C:不是的。 小媛:我还以为可以直接这样显示内容呢。 小C:哈哈哈,C# 显示两个变量的内容超级简单的,你看下面的代码。...小媛:我完整的代码是这样的,我去掉了 $ 号。...小C:加号在这里是表示两个字符串进行连接,意思就是变量 c 的值 hello 与变量 b 的 nihao i am xiaoming 进行连接,但是hello 后面没有空格,所以会黏在一起。...小媛:懂了,看来还真的是挺简单的,那我这样也可以是吗?

    77130

    故障分析 | MySQL 优化案例 - 字符集转换

    三、执行计划 分析一条慢 SQL,最有效的方法便是分析它的执行计划,看是否存在问题。 下面我们看下这条 SQL 的执行计划,主要由三张表(t、r、b)组成,从 t 开始嵌套连接 r,再嵌套连接 b。...整个执行逻辑很简单,至于 t、r、b 肯定是视图中定义的表别名。 从执行计划中可以看出 t 嵌套连接 r 的时候走的是主键索引,但是继续嵌套连接 b 的时候,却是走的全表扫描!...那么可能很有可能问题就出在这个地方,为什么 b 表没有走索引,是因为缺失了索引吗? ?...表连接上居然存在一个字符集的转换。那么问题可能就是出在这里。 起先我以为这一段字符集转换是开发在定义视图的时候自己加上去的,后来询问后发现开发并未如此做。...那么基本可以验证我的猜想,当 MySQL 创建视图时,如果发现表连接字段字符集不相同时,会自动添加字符集转换。 另外之前我们有个为什么 b 表没有走索引,是因为缺失了索引吗?的疑问。

    1.4K10
    领券