计算机基础
计算机组成原理
计算机网络:OSI七层协议、TCP/IP四层模型。
算法:排序、分治、动态规划、搜索、回溯。
数据结构:数组、队列、栈、堆、树、哈希表、字典树等。
前端知识
由于前端与后端的工作密切相关,所以后端工程师也应了解、学习前端的基本知识,且掌握的前端开发水平要能够支撑验证后端实践的程度。
操作系统
后台开发中,熟练使用Linux系统是最为关键的一环,毕竟后端服务多数都运行在Linux系统上。Linux的学习可以从以下方面入手:
环境搭建
系统安装
图形界面使用
常用命令
软件安装配置
网络管理
系统维护
服务器领域
程序开发
关系型数据库(Relational Databases)
关系型数据库(Relational Database)指的是创建在关系模型的基础上的数据库,用于超大规模数据的存储。它借助于集合代数等数学概念和方法来处理数据库中的数据。数据库管理系统(DBMS,Database Management System),是一种专门用于存储、修改并从数据库提取信息的系统软件。
常见的关系型数据库管理系统主要有MySQL、MariaDB、MS SQL、Oracle等。
1. 高内聚/低耦合
高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。一个完整的系统,模块与模块之间,尽可能地使其独立存在。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。
2. 过度设计
过度设计就是进行了过多的面向未来的设计或者说把相对简单的事情想复杂了,过度追求模块化、可扩展性、设计模式等,为系统增加了不必要的复杂度。
3. 过早优化
过早指的不是在开发过程的早期,而是在还没弄清楚需求未来的变化的走向的时候。你的优化不仅可能导致你无法很好地实现新的需求,而且你对优化的预期的猜测有可能还是错的,导致实际上你除了把代码变复杂以外什么都没得到。
正确的方法是,先有质量地实现你的需求,写testcase,然后做profile去找到性能的瓶颈,这个时候才做优化。
4. 重构 (Refactoring)
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
5. 破窗效应
又称破窗理论,破窗效应(Broken windows theory)是犯罪学的一个理论。此理论认为环境中的不良现象如果被放任存在,会诱使人们仿效,甚至变本加厉。一幢有少许破窗的建筑为例,如果那些窗不被修理好,可能将会有破坏者破坏更多的窗户。最终他们甚至会闯入建筑内,如果发现无人居住,也许就在那里定居或者纵火。
应用在软件工程上就是,一定不能让系统代码或者架构设计的隐患有冒头的机会,否则随着时间的推移,隐患会越来越重。反之,一个本身优质的系统,会让人不由自主地写出优质的代码。
6. 互不信任原则
指在程序运行上下游的整个链路中,每个点都是不能保证绝对可靠的,任何一个点都可能随时发生故障或者不可预知的行为,包括机器网络、服务本身、依赖环境、输入和请求等,因此要处处设防。
7. 持久化 (Persistence)
持久化是将程序数据在临时状态和持久状态间转换的机制。通俗地讲,就是临时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库或者本地磁盘中,能够长久保存)。
8. 临界区
临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。
9. 阻塞/非阻塞
阻塞和非阻塞通常形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其它所有需要这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。而非阻塞允许多个线程同时进入临界区。
10. 同步/异步
通常同步和异步是指函数/方法调用方面。
同步就是在发出一个函数调用时,在没有得到结果之前,该调用就不返回。异步调用会瞬间返回,但是异步调用瞬间返回并不代表你的任务就完成了,他会在后台起个线程继续进行任务,等任务执行完毕后通过回调callback或其他方式通知调用方。
11. 并发/并行
并行(parallel)指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
角色 | 职位 |
负责人 | 高级工程师 |
队员 | 产品经理 |
队员 | UI设计师 |
队员 | iOS工程师 |
队员 | 安卓工程师 |
队员 | 前端工程师 |
队员 | 后端工程师 |
工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传
工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传工作原因暂时无法上传