⑴ 普通程序员的工作生活是怎样的
通常我们进入公司以后,不会是重头开始一个项目,而是在已有代码的基础上进行维护或新功能的开发,所以必须“读代码”。
读有“泛读”,了解系统架构、功能模块,对系统有一个大致的认识,各个功能能找到相应代码实现的位置。
还有“精读”,通常就是调试了,在fix bug的时候使用。此外还包括审核:一些规范一点的公司,都会有code review,也是精读,但不用debug。
对于一个成熟的项目来说,读代码——而不是写代码——可能是最耗时间的工作了。
写注释文档
为了减少“读代码”的时间,我们不得不花时间“写注释”“写文档”——这个程序员最深恶痛绝的工作。所以现在“烂代码才需要注释”的声音变得越来越强,但无论如何,文档还是要写的。(注意:要能区分注释和文档)
了解需求
好了,终于到了“写代码”的时间了。
然而,在动手开始写代码之前,你必须花时间“了解需求”。和自己写个小程序玩玩不同,在公司,你是为别人写代码,所以你一定要了解别人究竟想实现什么功能。通常,这并没有你想象的那么简单,需要反复的沟通。
当然,也有一些团队和个人,不愿意在这上面“浪费时间”,通常他们的下场就是不断的写代码,然后不断的改代码,加班加点的做大量的无用功,整个公司怨气冲天一地鸡毛。
⑵ 程序员都有哪些强迫症行为
1.喜欢考虑后果和临界值。曾经写过一个面向用户的爬虫,由于用户有可能没有任何计算机基础,所以我不得不花很大的一部分精力来考虑用户有可能产生哪些不该发生的操作。一开始是这样的: - 程序君:欸?用户,你介个样子叫我很难做咩......后来干脆: - 按钮君:你看不见我你看不见我你看不见我 ...所以现在做一件事要比之前多考虑很多很多......2.养成了反思的好习惯。每次有bug了,不用想,肯定是自己的错,尽管认为自己没有错,但是肯定是自己哪里错了。然后就仔细反思代码的逻辑哪里不对......所以生活中一件事情发生后我总是会反思自己哪里做的不对,下次怎么做。3.忍耐度变高了。曾经写了一个上千行的JavaScript爬虫,没有面向对象没有分层,乱的简直是不堪入目,所以调试起来bug也是满天飞,有时候风大丢能糊我脸上......曾经被一个bug困扰了整整1天,一天什么都没干,就为了调这个bug。而结果是,这个bug没调好,反而倒是修复了很多其他奇奇怪怪的bug......而且还把我气哭了好几次......现在的我已经被bug调教的很听话了。
⑶ 程序员一般的工作都是干什么的
程序员的工作内容如下:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
(3)程序员在等电梯的时候都在想什么扩展阅读:
数据显示,近四成程序员处于单身状态,明显高于非互联网从业者24%的比例。广州、深圳、北京成为单身比例最高的三大城市。单身的程序员在择偶方面也有区别于其他人的偏好,更注重对象的颜值、身材和家庭背景。
统计显示,互联网从业人员对买房有不小热情。互联网从业人员更勇于背负房贷,29%互联网从业人员正背负房贷,这一比例两倍于非互联网从业人员。其中在各大城市排名中,杭州、北京、广州位列前三大互联网从业者背负房贷人数比例最高的城市。
在互联网企业的一个特色是,没有明确的上班时间和下班时间,灵活的工作时间和高强度的工作量,使得加班成了行业特色。在睡眠时间方面,程序员的睡眠时间集中在11点至凌晨1点之间,而非互联网从业人员的睡眠高峰在10点至12点之间。
⑷ 程序员思维会给你的生活带来哪些影响
比如:对于许多重复的、线性的事物,大脑将独立于编程。我要检查强迫症,反复检查是必要的,比如锁门,我会把锁分为几个步骤,顺序执行,返回结果,因为方法执行起来也不例外,上班时会放心,我只好在这个检查中进行治疗。驾校实习,第二节考试,编译程序,顺序执行,突发情况,分行解决方案,满分。
6。永远想想2的力量
职业原因:计算机存储信息的基本单位是位(位)。在二进制系统中,每个0或1是一个位。
日常行为:通常不是在10计算,而是在2计算。有些平凡的日子在程序员眼中也是神奇的。例如,程序员日是每年的第二百五十六天(2·8)。还建议每年使用10月24日作为程序员日(2?10)。
7。生活方式不健康
职业原因:程序员编写半天程序,没有电脑屏幕的眼镜,甚至在灵感爆发时熬夜。
⑸ 电梯调度算法...
不管你是在北上广还是在港澳台,甚至三四线城市,凡是有规模的地区,高楼比比皆是。不管是写字楼,还是大型商城,让你最头痛的就是乘电梯,尤其是在赶时间的时候。
每天早上,那些差5分钟就迟到的程序员,在等电梯时,一般会做两件事:
前者可能是写字楼里上班族惯有的精神类疾病,但后者肯定是程序员的职业病。本文对“骂电梯”不给予任何指导性建议。
但说起电梯调度算法,我觉得还是可以给大家科普一下,好为大家在等电梯之余,打发时间而做出一点贡献。
(电梯调度算法可以参考各种硬盘换道算法,下面内容整理自网络)
先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。
它根据乘客请求乘坐电梯的先后次序进行调度。此算法的 优点是公平、简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期得不到满足的情况 。
这种方法在载荷较轻松的环境下,性能尚可接受,但是在载荷较大的情况下,这种算法的性能就会严重下降,甚至恶化。
人们之所以研究这种在载荷较大的情况下几乎不可用的算法,有两个原因:
最短寻找楼层时间优先(SSTF-Shortest Seek Time First)算法,它注重电梯寻找楼层的优化。最短寻找楼层时间优先算法选择下一个服务对象的原则是 最短寻找楼层的时间。
这样请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象。
在重载荷的情况下,最短寻找楼层时间优先算法的平均响应时间较短,但响应时间的方差较大 ,原因是队列中的某些请求可能长时间得不到响应,出现所谓的“ 饿死”现象 。
扫描算法(SCAN) 是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。
它进行寻找楼层的优化,效率比较高,但它是一个 非实时算法 。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的。
所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成, 免去了电梯频繁的来回移动 。
扫描算法的平均响应时间比最短寻找楼层时间优先算法长,但是响应时间方差比最短寻找楼层时间优先算法小, 从统计学角度来讲,扫描算法要比最短寻找楼层时间优先算法稳定 。
LOOK 算法是扫描算法(SCAN)的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。
但 当 LOOK 算法发现电梯所移动的方向上不再有请求时立即改变运行方向 ,而扫描算法则需要移动到最底层或者最顶层时才改变运行方向。
SATF(Shortest Access Time First)算法与 SSTF 算法的思想类似,唯一的区别就是 SATF 算法将 SSTF 算法中的寻找楼层时间改成了访问时间。
这是因为电梯技术发展到今天,寻找楼层的时间已经有了很大地改进, 但是电梯的运行当中等待乘客上梯时间却不是人为可以控制 。
SATF 算法考虑到了电梯运行过程中乘客上梯时间的影响 。
最早截止期优先(EDF-Earliest Deadline First)调度算法是最简单的实时电梯调度算法,它的 缺点就是造成电梯任意地寻找楼层,导致极低的电梯吞吐率。
它与 FCFS 调度算法类似,EDF 算法是电梯实时调度算法中最简单的调度算法。 它响应请求队列中时限最早的请求,是其它实时电梯调度算法性能衡量的基准和特例。
SCAN-EDF 算法是 SCAN 算法和 EDF 算法相结合的产物。SCAN-EDF 算法先按照 EDF 算法选择请求列队中哪一个是下一个服务对象,而对于具有相同时限的请求,则按照 SCAN 算法服务每一个请求。它的效率取决于有相同 deadline 的数目,因而效率是有限的。
PI(Priority Inversion)算法将请求队列中的请求分成两个优先级,它首先保证高优先级队列中的请求得到及时响应,再搞优先级队列为空的情况下在相应地优先级队列中的请求。
FD-SCAN(Feasible Deadline SCAN)算法首先从请求队列中找出时限最早、从当前位置开始移动又可以买足其时限要求的请求,作为下一次 SCAN 的方向。
并在电梯所在楼层向该请求信号运行的过程中响应处在与电梯运行方向相同且电梯可以经过的请求信号。
这种算法忽略了用 SCAN 算法相应其它请求的开销,因此并不能确保服务对象时限最终得到满足。
以上两结介绍了几种简单的电梯调度算法。
但是并不是说目前电梯调度只发展到这个层次。目前电梯的控制技术已经进入了电梯群控的时代。
随着微机在电梯系统中的应用和人工智能技术的发展,智能群控技术得以迅速发展起来。
由此,电梯的群控方面陆续发展出了一批新方法,包括:基于专家系统的电梯群控方法、基于模糊逻辑的电梯群控方法、基于遗产算法的电梯群控方法、基于胜景网络的电梯群控方法和基于模糊神经网络的电梯群控方法。
本人设置的电梯的初始状态,是对住宅楼的电梯的设置。
(1)建筑共有21层,其中含有地下一层(地下一层为停车场)。
(2)建筑内部设有两部电梯,编号分别为A梯、B梯。
(3)电梯内部有23个按钮,其中包括开门按钮、关门按钮和楼层按钮,编号为-1,1,2,3,4……20。
(4)电梯外部含有两个按钮,即向上运行按钮和向下运行按钮。建筑顶层与地下一层例外,建筑顶层只设置有向下运行按钮,地下一层只设置有向上运行按钮。
(5)电梯开关门完成时间设定为1秒。电梯到达每层后上下人的时间设定为8秒。电梯从静止开始运行到下一层的时间设置为2秒,而运行中通过一层的时间为1秒。
(6)在凌晨2:00——4:30之间,如若没有请求信号,A梯自动停在14层,B梯自动停在6层。
(7)当电梯下到-1层后,如果没有请求信号,电梯自动回到1层。
每一架电梯都有一个编号,以方便监控与维修。每一架电梯都有一实时监控器,负责监控电梯上下,向电梯升降盒发送启动、制动、加速、减速、开关电梯门的信号。若电梯发生故障,还应向相应的电梯负责人发送求救信号。
电梯内部的楼层按钮:
这样就表示乘客将要去往此层,电梯将开往相应层。当电梯到达该层后,按钮恢复可以使用状态。
电梯内部开门按钮:
如若电梯到了乘客曾经按下的楼层,但是无乘客按开门按钮,电梯将自动在停稳后1秒后自动开门。
电梯内部关门按钮:
电梯外部向上按钮:
电梯外部向下按钮:
你肯能意识到 哪个算法都不是一个最佳方案,只是它确实解决了一定情况的问题 。但是对一个优秀的程序员而言,研究各种算法是无比快乐的。也许你下一次面试,就有关于调度算法的问题。