需求评审、项目排期、研发上线,产品与开发打交道的频率可以说很高。一个不懂技术的产品经理,可能被开发忽悠,也可能天马行空出低可行性的需求。而就目前的求职市场而言,拥有技术背景的产品经理,更具优势。因此,产品经理懂点技术是必要的。不过不是写代码。懂点开发常常挂在嘴边的名词,懂点技术原理,我认为可以弥补像我这样,缺乏技术背景的产品经理的劣势。
技术涵盖的内容太大了,本篇文章先介绍一下常见的名词,不至于完全听不懂他们在说啥。
1、字符与字节有什么区别?
字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位;字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。
不同编码里,字符和字节的对应关系不同:
ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码中:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
写需求文档时,经常要限定一段数据的长度。默认一般是1个字符对应2个字节。但上周就遇到一个情况,限定10个字节,却只能输出3个汉字,开发一开始也是懵逼的,后来才发觉,他用的是UTF-8编码标准。
2. 什么是接口?
百度百科:“两个不同系统(或子程序)交接并通过它彼此作用的部分 。”我的理解是,一个程序,是一个藏着很多工具(方法与数据)的盒子,而接口是盒子的开关,按下开关,你可以直接使用盒子里的工具,而不需要打开盒子看个究竟。很多地方都会用到接口,有平台对外公布的接口,也就是API;也有常见的客户端与服务端沟通的接口等。
3. 什么是封装?
百度百科:”封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,数据和函数都是类的成员。“简单理解,就是把工具(方法与数据)装到盒子里的整个过程。
4. Post与Get有什么区别?
偶尔会听到前台开发与后台开发讨论时,会提到Post与Get方法,后台给出的接口文档里也写着。网上一查,原来他们是一对在客户端与服务端交互时候用到的HTTP方法。其中,Post一般用于更新服务器数据,而Get一般用于获取或查询服务器数据。这里还有个入参与出参的概念,入参指的是请求服务器的参数,出参指的是服务器返回的参数。我的理解是,用Post方法时,入参包含很多准备更新的数据,出参仅表示更新的结果;而Get方法刚好相反,入参很简单,出参则包含很多服务器返回的数据。
5. SDK与API有什么区别?
SDK是用来开发某一个平台的应用的工具包,API 是让同一平台下的应用取用它的功能的方法库
API是以功能为导向的方法清单,当 API 数量够多功能够繁复并且可交互为用时,开发商就会为了开发便利,而预先撰写好一些组合好 APIs 的 API供开发者使用,确保开发者能有一致的开发与使用体验。然后,也陆续发展出测试、除错工具,甚至是设计不同平台开发环境所需的套件,尤其针对不同平台,更是设计了对应的工具来协助开发、除错;SDK 名词之所以出现,俨然是为了汇整上述资源而诞生的。因此,可以说SDK是 API 的包含者(直接使用)与应用者(以便加速开发)
6. 什么是第三方库?
除本地类库(开发自己写的)、系统类库(系统自带的)之外的类库(类的集合,不等于框架,框架是比类库更高一级的概念 )
7. 什么是 MVC 结构模型?
示意图
MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,控制器决定用哪个模型来进行处理,然后模型通过业务逻辑层处理用户的请求并返回数据,最后控制器确定用哪个视图模型,用相应的视图格式化模型返回数据,并通过显示页面呈现给用户。
通过MVC这种特殊的设计结构,大大提高了Web应用的开发效率。主要有以下几方面的优点:
1、低耦合性(视图层和业务层分离);
2、高重用性和可适用性(允许不同式样的视图访问同一个服务器端的代码,比如web的HTTP浏览器和无线浏览器WAP);
3、较低的生命周期成本(开发和维护用户接口的技术含量降低);
4、部署快速(不同部件的开发人员专注于自己那个模块);
5、可维护性(分离视图层和业务逻辑层使Web应用更易于维护和修改);
6、有利于软件工程化管理(由于采用分层的思想);
8. 服务端常用语言及其优缺点(Java、Node.js、PHP)
Java
优点:
1、强类型、编译型语言,编译时就能发现 bug,不需要等到运行时再去调试
2、JavaSE规范,自由处理网络相关、IO 相关的内容
缺点:
1、语言本身缺点较多
2、本身的规范和不够灵活也导致了代码本身很难优化
PHP
优点:
1、跨平台,性能优越,和很多免费的平台结合非常省钱,支持N种数据库
2、语法简单
3、支持主流技术,比如WebService、Ajax、XML等等,足够使用
4、有成熟的框架与社区,有很多开源的框架可以应用
缺点:
1、对多线程支持不太好
2、语法不太严谨
Node.js
优点:
1、采用事件驱动、异步编程,为网络服务而设计
2、JavaScript 易上手,有着活跃的社区和很多的第三方库
3、常驻内存
4、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案
缺点
1、混乱的语言规范
2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器
9. 关系型数据库(SQLite、Oracle、Mysql)的特性、优点与缺点
特性:
1、关系型数据库,是指采用了关系模型来组织数据的数据库;
2、关系型数据库的最大特点就是事务的一致性;
3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
优点:
1、容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
缺点:
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、高并发读写需求;
4、海量数据的高效率读写;
10. 非关系型数据库(MongoDb、Redis、HBase)的特性、优点与缺点
特性:
1、使用键值对存储数据;
2、分布式;
3、一般不支持ACID特性;
4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
优点:
1、无需经过sql层的解析,读写性能很高;
2、基于键值对,数据没有耦合性,容易扩展;
3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式;
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理,附加功能bi和报表等支持也不好;
以上有一部分内容来自网络,侵删。
技术毕竟不是自己的专业,如果觉得我哪里说得不对,还请及时指出,谢谢!
网友评论