作为软件工程师,你必须知道的20个常识

作为一名优秀是软件开发工程师,以下的这些常识你知道吗?在实际工作中有没有总结过呢?小编就带大家一起分享这20个软件开发常识。 1、针对面向对象的设计与分析:为了让软件有更好的可维护性,重用性以及快速开发,简短的OOAD与它的SOLID原则对于每一个软件工程师来说都是该牢记的。2、软件品质因素:软件工程的好坏与软件的品质因素是绝对关联的。请在开发过程中深刻的理解这一点。3、数据结构与算法:深刻理解像数组,列表,栈,树,图,集合等这样的基本数据结构,并在软件开发过程的关键部分使用好的算法。这样整个软件逻辑就会很清晰了。4、Big-O符号来标记算法复杂度:在开发过程中,请务必使用 Big-O 符号来比较两个代码段或者不同算法所消耗的时间复杂度,这在开发高性能软件项目中是非常重要的。5、UML图:UML图已经是一个通用的软件设计与分析的语言。如果你们在开发软件的过程中还没有做UML图,那么给人的感觉就是这压根就不是软件工程。6、正确的衡量软件开发进度。7、设计模式:设计模式是前人在解决各种各样问题的过程中总结出来的一套标准对策,在绝大部分情况下,使用这些模式肯定是利大于弊的。如果你不想在开发过程中重新造 轮子,那么就直接使用它吧。8、理解操作系统的基本原理:因为所有的应用程序都是直接运行在操作系统这个层级的,学习操作系统的基本原理能让我们对应用程序的底层以及性能有更好的把握。9、学习计算机组成原理:几乎所有的应用程序甚至是OS都需要与物理硬件打交道的,所以学习计算机组成原理与理解操作系统原理一样都可以让你对于应用程序有更深刻的理 解。10、网络基础:网络与计算机组成,操作系统以及传输流程都是紧密关联的,理解网络基础能让你在开发过程中得心应手。11、需求分析:对于软件工程来说,需求分析是项目的起点,也是整个项目最最重要的部分。如果这玩意你搞错了,整个项目的方向也就错了。12、软件测试:在软件工程中,测试也是非常重要的。单元测试,黑盒测试,白盒测试,TDD,集成测试等等都是我们必须知道的。13、独立管理:主要是说类库(JAR,DLL等等)的管理,熟悉使用一些类似Maven,Ant,lvy这样的知名工具对于大型项目的类库管理是非常有用的。14、持续化集成:持续化集成能让测试大型模块与组件更加简单与自动化,关于这一点,你可以去了解 Hudson 这个工具。15、ORM:了解Hibernate这种将对象与数据库表映射工具是非常有好处的,它可以减少你的代码量并节省你的代码维护时间。16、DI(独立注入):DI或者IoC(Inversion of Control)的具体实现框架Spring能让你创建对象时更加轻松,对于大型企业级项目更是如此。17、版本控制系统:VSC工具(SVN,TFS,CVS等)对于团队合作开发以及版本控制都是非常重要的。熟练使用这类工具算得上是必备技能。18、国际化:通过i18n来将不同语种的字符串存储在其他文件是让软件支持多语种最好的方法。所以i18n在不同的IDE上使用的方法我们应该了解。19、架构模式:理解类似MVC,MVP,MVVM这样的架构模式非常关键,这能让你写出易维护,简洁以及方便测试的代码。20、编写干净的代码:你的代码仅仅只是能够正常运行是远远不够的,它必须让编程人员轻易看懂来方便后续维护,所以,代码格式以及编写易读的代码技术都是我们需要了解的关键点。来源:web开发者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新鲜美团测试岗面经(带答案)

1、测试环境搭建过程 2、 验证环境部署是否成功时 跑测试用例 接口是什么样的?(服务对外提供的调用接口) 3、 数据库 表 有个字段 name字段 nameliuguoge 唯一标识id3 修改nameguogeliu update user set nameguogeliu where id3; 4、写…

如何实现两个数据库之间的同步

两台服务器分别架在两个不同的机房,要实现所有表中数据的同步,延时一两分钟没关系,数据库数据量很大,表大概有不到一百个吧,怎么实现同步?不同服务器数据库之间的数据操作--创建链接服务器 execsp_addlink…

博弈论经典入门

文章目录博弈论常见模型必胜点和必败点的概念:必胜点和必败点的性质:巴什博弈斐波那契博弈威佐夫博弈尼姆博弈SG函数与SG定理博弈论 博弈论 ,是经济学的一个分支,主要研究具有竞争或对抗性质的对象,在一定规则下产生的…

百度校园招聘历年经典面试题汇总:Java开发岗

(1)、Java中的多态 (2)、Object类下的方法 (3)、Finalize的作用和使用场景 (4)、Hashcode和equals (5)、为什么要同时重写hashcode和equals,不同时…

如何实现Oracle数据库之间的数据同步?

我们都知道,在Oracle数据库的管理与开发工作中,总会存在着一些表数据和基础资料数据,这时需要有效的将这些数据库进行同步合并,有没有什么简单的方法可以实现Oracle数据库之间的数据同步呢?在此诚恺科技重庆服务器频道…

c++面试题总结1

内存结构 堆:由程序员手动分配和释放,完全不同于数据结构中的堆,分配方式类似链表。由malloc(c语言)或new(c)来分配,free(c语言)和delete(c&…

JBPM4.4整合SSH2项目

一:导入相应的jar包: *注意事项: (1).与项目中的jar包不能出现冲突 (2).版本应一致 jbpm-bpmn.jar jbpm-console-form-plugin.jar jbpm-console-graphView-plugin.jar jbpm-console-integration.jar jbpm-console-reports.jar jbpm-db.jar jbpm-example…

Linux简单命令收录(who,echo,date)【上】

shell严格区分输入命令的大小写,如who、Who和WHO是不同的,其中只有全小写——who是正确的Linux命令。 命令与选项和参数之间要用空格或制表符隔开。连续空格会被shell解释称单个空格。 选项:对命令的特殊定义,以“-”开始&#…

移动端测试面试题目大全

ADB工作原理 当用户启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,所有的adb客户端都是用端口 5037与…

Linux简单命令收录(cal,passwd,clear)【下】

1、cal NAME cal - display a calendar 显示日历 SYNOPSIS cal [options] [[[day] month] year] cal [options] [timestamp|monthname] 用法&#xff1a; cal [选项] [[[日] 月] 年] cal [选项] <时间戳|月份名> OPTIONS -1…

web知识点大总结

#第一章 Web基础知识 Web开发基本概念 1、万维网是一个由许多相互链接的超文本组成的系统&#xff0c;通过互联网访问。 2、web&#xff1a;worldwideweb&#xff0c;万维网&#xff0c;简称web&#xff0c;www&#xff0c;通常称为网页。 3、web开发&#xff1a;进行网页页…

Linux命令集—— cat AND more

1、cat NAME cat - concatenate files and print on the standard output 连接所有指定文件并将结果写到标准输出。【经常用来显示文件的内容&#xff0c;类似DOS的TYPE 命令】 SYNOPSIS cat [OPTION]... [FILE]... cat [选项]... [文件]... With no FILE, or when FILE…

Linux简单命令集——less

NAME less - opposite of more more的对立面 注意 与more命令类似&#xff0c;less命令也用来分屏显示文件的内容&#xff0c;但是less命令允许用户向前或向后浏览文件。例如&#xff0c;less命令显示文件内容时&#xff0c;可以用⬆键和⬇键分别将屏幕内容下移一行和上移一…

《重构-改善既有代

重要列表 1、如果你发现自己需要为程序添加一个特性&#xff0c;而代码结构使你无法很方便地达成目的&#xff0c;那就先重构哪个程序&#xff0c;使特性的添加比较容易的进行&#xff0c;然后再添加特性 2、重构前&#xff0c;先检查自己是否有一套可靠的测试机制&#xff0…

Myeclipse 6.5 优化

1、取消自动validation validation有一堆&#xff0c;什么xml、jsp、jsf、js等等&#xff0c;我们没有必要全部都去自动校验一下&#xff0c;只是需要的时候才会手工校验一下&#xff01; 取消方法&#xff1a; windows–>perferences–>MyEclipse Enterprise Workbench–…

Linux简单命令集——head

NAME head - output the first part of files 输出文件的第一部分SYNOPSIS head [OPTION]... [FILE]...head [选项]... [文件]...head命令在屏幕上显示指定文件file的开头若干行&#xff0c;行数由参数值来确定。显示行数的默认值是10。-c, --bytes[-]NUM print the firs…

操作系统中避免死锁的银行家算法【表面C++实际C语言】一学就废的菜鸡代码

文章目录银行家算法实验原理数据结构初始化输出资源分配量安全性算法银行家算法完整代码测试数据测试结果第一题第二题银行家算法 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源&#xff0c;但系统在进行资源分配之前&#xff0c;应先…

GitHub 使用指南

目录切换分支删除已有文件只删除远程仓库中的文件&#xff0c;不删除本地仓库中的文件同时删除远程仓库和本地仓库中的文件提交文件git查看本地分支连接的是哪个远程分支切换分支 查看本地和远程所有分支 git branch -a当前本地分支为绿色&#xff0c;当前所在分支前带有“*”号…

百度EBG测试部AI测试工程师面经

百度EBG测试部AI测试工程师 1、自我介绍 自我介绍尽量多说一点&#xff0c;她会问你“还有吗&#xff1f;” 2、项目介绍 简历上的项目都让介绍了。会问这个项目是做什么的&#xff0c;是由谁开发&#xff0c;项目如何得到的&#xff0c;在测试过程中实现了什么。 3、自己…

一学就废的并查集它来了

文章目录题目描述输入输出样例输入样例输出提示算法思想代码实现寻找根节点汇总连接情况完整代码关于flag的初值题目描述 某省调查城镇交通状况&#xff0c;得到现有城镇道路统计表&#xff0c;表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城…