刚写完排序算法,就被开除了…
据说是一个月薪 9K 的 Java 程序员,因老板让他写一个排序算法,然后他就写了一段屌炸天的休眠排序算法,接着他就被老板开除了……
排序算法代码大概是这样的:
这段代码有什么问题?
这个程序员更屌啊,数字排序,用一行简单的 Arrays.sort 就搞定的东西,他竟用到了这么多概念。
1、循环
2、线程休眠
3、多线程
下面贴上完整的代码:
/**
* 微信公众号:Java技术栈
*/
public class ArraySort implements Runnable {
private int number;
public ArraySort(int number) {
this.number = number;
}
public static void main(String[] args) {
int[] numbers = new int[]{102, 338, 62, 9132, 580, 666};
for (int number : numbers) {
new Thread(new ArraySort(number)).start();
}
}
@Override
public void run() {
try {
Thread.sleep(this.number);
System.out.println(this.number);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
还好是数字小啊,还好休眠是毫秒啊,要是数字大,要是休眠时间是秒,那要等多少休眠时间才能排序完?
按道理,他的程序也没问题啊,老板为什么要开除他?应用程序中出 BUG 不是很正常的事吗?但他这种排序思维,能写出这样的隐藏 BUG 也是绝了,创造性的发明了 "休眠排序" 算法,系统里面还不知道有多少这样的坑,不开除他开除谁啊?
如果非要说一个原因,我感觉,这哥们是故意这么写的,造成查询速度较慢,之后下个迭代优化,查询速度瞬间提上来了,这可是为公司做出大贡献了,年底了,奖励个优秀个人奖.....
或许他应该看一下排序这篇文章:《改变计算技术的9个伟大算法》。
说到这个程序员,让我想起了最近审查代码时候的几个坑,真是让人哭笑不得。。。
示例1:
if(flag == false){
return true;
} else {
return false;
}
直接 return flag 不行?写这么绕,还把逻辑写错了。
示例2:
if(...)
a
b
c
多段代码,if 不加 {},后面格式化成了:
if(...)
a
b
c
这样导致业务逻辑有严重的 BUG,无语了吧?还有更多奇葩的.
原文发布时间为:2018-11-24
本文来自云栖社区合作伙伴“互联网架构师”,了解相关信息可以关注“互联网架构师”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
编程王道,为「慢」不破
最近一段时间,在团队中我发现好多程序员,尤其是初级或者新手程序员常常犯得的错误都很初级,经常犯一些编程中的大忌。不是没有能力做好,而是做事不细心,我一直在给他们灌输一个思想,其实编程的核心和王道就是:慢就是快。都说天下武功,唯快不破。但是在编程的道路中,天下代码,而是:唯「慢」不破。 今天,我们就来谈谈新手程序员或者经验少的程序员常常犯得大忌是哪些,表现形式有哪些,以及如何避免的问题。 1、兵马未动,粮草先行 所谓兵马未动,粮草先行,就是讲做一件事之前一定要做够充分的准备工作。而很多程序员犯得大忌和表现形式就是:原型需求和整个产品的业务逻辑都没有搞明白之前,就开始动手了。边做边开始捋需求,对于前端程序员来讲,这还好说一点,但是对于后端的程序员来说,真的是大忌了。因为架构的设计,数据库的设计都是要依据这个产品的业务逻辑来实现的。 这里讲的编程王道,唯「慢」不破,指的是前期一定要花大量的时间来搞明白产品的需求和业务逻辑,不要着急动手去做代码的实现。 我感觉作为一个程序员来讲,在正式敲代码实现之前,搞明白产品需求和业务逻辑到确定数据库的设计和架构的设计,至少得占这个项目所有时间的 1/3 左...
- 下一篇
Java Web项目开发从0开始的要点!
前言 本文章详细的列出了开发一个传统JavaWeb项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。 第一部分:环境准备 1. Maven命令创建web骨架 mvnarchetype:create-DgroupId=net.rocketa-DartifactId=mywebapp-DarchetypeArtifactId=maven-archetype-webapp 注意webservlet版本(web.xml,3.1),Junit版本指定为4.X(这样Spring好通过注解的方式来运行单元测试) 2. 注意在IDEA中需要设置好MAVEN工程的Sources/Tests/Resources/Test Resources属性。 3. 日志依赖 slf4j:规范和接口 具体的日志实现有: log4j、logback、common-logging 因此我们一般是使用slf4j接口+一种具体的日志实现+slf4j和这个具体日志实现的依赖整合 4. 数据库依赖 有2个依赖,需要注意,一个是驱动,一个是数据库连接池(C3P0,DBCP...)。 驱动JAR包是运行期需...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G