专业

GMV:Gross Merchandise Volume,是成交总额(一定时间段内)

Pageviews:综合浏览量是网站各网页被浏览的总次数.一个访客有可能创造十几个甚至更多的PV量

SPU :Standard Product Unit (标准产品单位)属性值、特性相同的商品就可以称为一个SPU,俗称的“款”

SKU:Stock Keeping Unit(库存量单位)库存进出计量的单位, 可以是以件、盒、托盘等为单位。SKU是物理上不可分割的最小存货单元,商品的“件”

自动办公系统术语
BPM:业务流程管理(Business Process Management);
RTX:腾讯通(Real Time eXchange),公司内部实时交流软件;
WMS:仓储管理系统(Warehouse Management System);
ERP:企业资源计划( Enterprise Resource Planning );
OA:办公自动化( Office Automation );
CRM:客户关系管理( Customer Relationship Management );
SaaS :软件运营服务模式(Software-as-a-service);
SAP:企业管理解决方案(System Applications and Products);

公司常用访问网址:
BPM:http://bpm.**group.com
EMAIL:http://mail.**group.com
VPN:http://vpn.**group.com:9443

Foxmail:服务器邮箱类型为:POP或POP3

共享文件服务器地址:\172.18.18.100

CMS (Content Management System) 内容管理系统
BOSS(Business & Operation Support System) 业务运营支撑系统 融合了业务支撑系统(BSS)与运营支撑系统(OSS)
SRM (Supplier Relationship Management) 供应关系管理
CRM (Customer Relationship Management) 客户关系管理
ERP (Enterprise Resource Planning) 企业资源计划
WMS (Warehouse Management System) 仓库管理系统
TMS (Transportation Management System) 运输管理系统
OMS (Order Management System) 订单管理系统
EDM (Email Direct Marketing) 电子邮件营销

SEO(Search Engine Optimization)搜索引擎优化
BOSS(Business & Operation Support System) 业务运营支撑系统

MRO (Maintenance, Repair & Operations) 即:Maintenance维护、Repair维修、Operation运行 (MRO)。通常是指在实际的生产过程不直接构成产品,指非生产原料性质的工业用品,只用于维护、维修、运行设备的物料和服务。MRO是。

手机M站
电商专业,网络营销推广或移动营销课程中所说的M站。指的是HTML5制作的网页,他的功能已经趋近于一些软件的功能,并且它无系统要求,只需要浏览器即可完成浏览或使用。还有一大特征就是开发难度低于一系列的软件开发,开发门槛低、兼容性强。但HTML5作为网页没有固定的使用平台,这也是用户更多时间花费在软件上的重要原因之一,但占存小,无需安装也是M站的一大特色。所以在企业当中,做大型活动的网络宣传一般选择软件附加广告推广 较多,而使用M站也有较大发展前景,因为开发时间短,易宣传推广,可用于短时间段小地域性的活动宣传,并且因为无系统等要求,可跨平台使用,所以针对的客户面比软件要广。
/
这里写图片描述
产品部分
1. 怎么理解产品经理这个岗位?
从整体来看,产品经理就是负责把用户需求或业务需求转化为产品需求的人,为产品的具体设计、执行和成果负责。具体主要有三项职责:产品规划、产品设计和产品执行。
2. 产品设计常用工具有哪些?分别适应于什么场景?
说出4种以上工具即可,不限于以下几种。
VISIO/PPT:画流程图、产品概貌介绍
思维导图工具:产品概貌介绍
Word:文档编写
Axure:原型制作
3. 产品经理的基本素质有哪些?
说出5种即可,不限于以下几种。
独立思考能力、分析判断能力、需求理解能力、沟通表达能力、工具使用能力、规划设计能力、迭代管理能力、责任心
4. 你认为产品经理最重要/最核心的能力是什么?说出三点。 
逻辑思维能力:制定方案
协调沟通能力:制定管理计划
执行力:产出结果
5. 如何进行产品架构?
可以结合用户体验的5大要素来讲,包括战略层(定位与目标用户)、范围层(功能列表及优先级)、结构层(功能关系、信息架构)、框架层(流程与逻辑)、表现层(UI、交互)。
以人体来举例:
骨骼:思考产品的结构,来源于对用户需求的理解,也来源于定位,例子:微信,豌豆荚的过去和现在。
肌肉:最重要的几个核心功能分别是什么,例子:微博最重要的几个功能时什么?
血液:其他功能还有那些,他们与核心功能的关系是什么?如何穿起来,例子:微博的广场,今日热门。
皮毛:每一处细节。
6. 分析一下如何进行版本控制的?
版本控制流程目标:
1、保证各个环境(开发、测试、主干)的独立,避免相互影响。
2、减少最终发布时合并主干出现冲突的概率。
3、降低冲突处理的难度。
原则:多个版本(开发版本,测试版本,发布版本);多次合并。
7. 请简述你所理解的产品策划和产品运营,有什么区别和联系。
产品策划/设计和产品运营是产品工作的两个重要方面。
区别:策划-更强调产品从0到1;运营:更强调产品从1到100。
联系:产品运营实际上是对产品设计的验证和检验,站在产品的第一战线(用户),去理解和把握用户的需求,进而转化为优化产品的需求。
8. 随着互联网行业的高速发展,许多行业都感叹:“大数据时代”来临了。请谈谈你理解的大数据是什么?
几个特点:
1)核心原理:从“流程”核心,转变为“数据”核心
2)价值原理:由功能是价值,转变为数据是价值
3)预测原理:从不能预测,转变为可以预测
4)信息原理:从人找信息,转变为信息找人
9. 如何理解“互联网思维”?
可以借鉴小米的七字诀:“专注、口碑、极致、快”。其中,“专注”和“快”强调互联网思维下打造产品的方式,“口碑”和“极致”强调互联网产品用户体验的重要性。
10. 平时如何获取行业资讯?会看什么书?收获了什么?
开放性问答。
11. 怎样的产品才能称得上是好产品?
首先,要解决用户的迫切、强烈、高频的需求/痛点
其次,是要一定规模的黏性用户
再次,要拥有不错的体验
最后,是可行的潜在盈利模式(实用性、易用性、创新性,营利性)。
12. 请罗列用户研究方法有哪些?如何进行定性和定量的研究?
定性:用户访谈、焦点小组、可用性测试、用户画像
定量:调查问卷、数据分析、眼动测试。
13. 互联网常见的商业模式有哪些?对应的代表产品是什么?

  1. 第一批用户如何获取?
    第一批用户获取方式需要从产品特点、发展策略、资源配置等多方面考虑,一般大公司由于覆盖用户面广、资源充沛等原因采用资本驱动的热启动(导量、广告等)方式;而小公司由于用户定位较精确、重视小而美的产品体验,往往通过冷启动(推文、口碑等)的方式。
  2. 如何发现用户需求?如何分析转化产品需求?如何判断需求优先级?
    1)用户调研,挖掘本质
    2)需求与产品定位和核心功能的契合度,带来的价值,进行灰度测试
    3)性价比=价值/成本,不同阶段需求优先级排期不同
  3. 生活中有哪些糟糕的用户体验,请试作优化分析。
    1)自动取款机——指纹识别、忘记拿卡的提醒、界面操作、手机一键报警
    2)找不到遥控器——物联网,手机一体操控
    3)看病——线上预约后机器取号;等待就诊人数,就诊提醒,药单与就诊记录
  4. 你不是目标人群怎么做好这个APP?
    目标人群优势在于对产品对用户理解深,但不是理解用户的唯一方法,这个优势我可以通过更细致的访谈,和参与式观察获得。
    不是目标用户可以站在产品经理视角观察,毕竟用户想要的不都是产品所需的。
  5. 你怎么理解用户体验?
    用户体验的设计应以用户为中心,忠实用户的真实感受,是感动用户的产品设计。
    用户体验已经成为一种新的产品价值,当技术已经不再是产品核心竞争力时,产品的竞争实质上就是用户体验的竞争,用户注重的不再是产品的性能,而是产品所带来的愉悦感和价值感。
  6. 你的项目总是不能按期上线,你会如何解决?
    1)将目标量化。在进行项目管理的时候,数字是可以有效地反应项目进度和项目成果的,可以避免扯皮和推卸责任。
    2)定期跟进。每个项目在前期准备、正式开始、项目进程、和项目结果这些整体流程中都需要有人跟进。实时跟进项目进程,不仅可以了解项目进展到哪一步,也方便随时纠错,可以避免在项目的最后发现需要推翻重来。
    3)培养团队意识。团队在进行项目管理的时候,应该着重培养团队意识和协作精神,同时,加强培训,在业务水平上进行提升,只有整体气势和能力都有明显的提升,才能一起协作,提高效率,做出优质的项目。
  7. 你认为商业型产品经理和用户型产品经理的异同是什么?
    商业产品经理和用户产品经理本质上是相同的,都需要良好的对需求的理解和挖掘能力,以及我们通常所说的产品设计能力、项目推动能力等等。
    不同之处在于:
    1)从产品模式上会有一定的区别。商业产品的特点是直接切入商业本身,在产品出现的时候商业模式基本就已经确定,基本不存在裂变的可能性;用户产品的特点是通过切入用户需求来满足商业变现的可能,在产品出现的时候盈利模式并不确定,并且裂变的可能性比较大。
    2)由于产品模式的区别带来产品设计时的区别,商业产品经理在设计商业产品时会跟更多考虑商业模式、客户需求满足路径、销售体验等与公司营收关联更为紧密的因素;用户产品经理在设计用户产品时会更多的考虑交互、用户体验的差异等。
    3)产品设计带来的区别衍生出相应的所谓KPI的区别,通常,商业产品以客户的付费率、续费率等营收直接相关指标为KPI,而用户产品通常会以用户的活跃度、用户的增长率等与营收相关的间接指标作为KPI。
  8. PRD问答包括哪些内容?

  9. 为什么需要写产品需求文档?
    1)清晰明确地传达产品需求; 
    2)保证各部门沟通顺畅且有理有据;
    3)确保工作传承。

  10. 怎样策划一个线上/线下活动?
    线上:
    1)立项阶段——明确活动目的,目标人群;确定活动形式;
    2)执行阶段——活动页面设计(满足目的且吸引);活动规则说明(简洁易懂逻辑清晰);统计数据需求、是否需客服配合。
    线下:
    1)方案应包括时间场地、工作分配、成本预算、物料准备、宣传通知、应急措施等全面的内容。
    2)执行比方案更重要,明确每一位团队成员的工作执行以及现场应对尤为重要。
  11. 产品上线后最需要关注的指标有哪些?为什么?
    1)PV/UV/注册量/登录量——反应总体用户数;
    2)留存率、跳出率、日/月活——反应用户粘性;
    3)内容类/商业类指标——反映产品内容质量、商业价值。
  12. 怎么做竞品分析?
    1)行业现状与趋势、市场数据;
    2)竞争对手的产品定位与发展策略;
    3)产品特色、目标用户;
    4)核心功能;
    5)界面交互设计;
    6)运营推广、商业模式
  13. 如何将用户需求转化为产品需求?
    需求搜集、分析、筛选、验证等方法论都是一个合格的产品经理应该掌握的理论基础。可以尝试从用户的核心需求切入,参考二八原则,只有少部分产品能满足大部分产品的需求,因此只有用户普遍存在的需求才构成产品需求。在这个基础上,还可以参考less is more法则,专注于某个领域的需求,简化功能保持产品的简洁
  14. 如果要你从零开始做一款产品,你需要做些什么?
    陈述产品开发流程的几个阶段。
    从需求搜集、分析、验证等角度切入谈自己对这些模块的理解。
  15. 如果产品开发过程中有一个需求必须延期,你怎么办?
    如果这个需求是核心需求,那就要尽可能寻找更多的支持和资源完成这个需求;如果这个需求不是核心需求,那就可以考虑将这个需求延期到下一版更新迭代中去。
  16. 如果老板和你产生分歧,不支持你提出的需求,你怎么办?
    考察团队沟通技巧。
    对于产品小白而言,用数据说话是比较容易切入的角度。首先要和老板再一次解释这个需求的由来和场景等等,再次沟通无果的情况下,可以做小型问卷或是AB测试,尝试用数据说服老板。
  17. 请向客户推荐易瑞门户和M站。
    开放性话题。
  18. 请谈一下易瑞和固安捷、易派客的区别。
    开放性话题。
  19. 目前你觉得更应该关注门户还是BOSS的优化。
    开放性话题。
  20. 谈一谈你手机里产品设计比较好的产品及其主要特点。
    开放性话题。

技术部分
1. 谈谈你对NoSQL的理解。
开放性话题。
NoSQL,泛指非关系型的数据库。有四大分类:
键值(Key-Value)存储数据库:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库:这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库:文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库:图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。
适用场景:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。
2. 为什么要前后分离?
开放性话题。说出4点即可。
前后端实现解耦,分工明确,彻底解放前端。
方便复用,减少相互依赖,提高工作效率。
快速定位问题。
降低维护成本。
便于横向扩展。
减少后端服务器的并发/负载压力。
3. 谈谈你对MVC的理解。
开放性话题。
M:模型层,V:视图层,C:控制器
由控制器调用模型处理数据,然后将数据映射到视图层进行显示,优点是可以实现代码重用性,避免代码冗余,M和V实现代码分离,从而使同一个程序可以使用不同的表现形式。
4. 谈谈你对json数据格式的理解。
开放性话题。
JSON:一种基于文本,独立于语言的轻量级数据交换格式,可以用于任何编程语言。特性是简洁,用处广泛,可以跨平台使用,不存在通常意义上的字符格式问题。
JSON规定的格式:
1) 数据在键值对中
2) 数据由逗号分隔
3) 花括号保存对象
4) 方括号保存数组
5. 如何提高应用的运行效率?
说出六种以上,包括但不限于:优化SQL;创建索引;使用缓存;合理设计页面;静态化;图片服务器分离;优化代码;异步响应;数据库集群;负载均衡;水平扩展;使用CDN;镜像等。
6. 谈谈你对事务的理解。
开放性话题。
事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。
事务特性:
(1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
(2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态。
(3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务。
(4)持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
或者这样理解:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
7. 谈谈MySQL的存储引擎主要有哪些,区别是什么?
能够说出myisam和innodb即可。
MyISAM 是非事务的存储引擎;适合用于频繁查询的应用;表锁,不会出现死锁;适合小数据,小并发;易产生碎片,要经常优化,读写速度较快
innodb是支持事务的存储引擎;合于插入和更新操作比较多的应用;行锁,有崩溃恢复能力;设计合理的话是行锁(最大区别就在锁的级别上);适合大数据,大并发;写速度比MyISAM慢。
8. 什么是面向对象?
开放性话题。
面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP;通俗的解释就是“万物皆对象”,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数。
9. 面向对象有哪些特征?
主要有封装,继承,多态。抽象。
1、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。
2、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。
3、多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。
10. 简述 private、 protected、 public修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
11. 堆和栈的区别?
栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。
12. 什么是构造函数,什么是析构函数,作用是什么?
构造函数(方法)是对象创建完成后第一个被对象自动调用的方法。它存在于每个声明的类中,是一个特殊的成员方法。作用是执行一些初始化的任务。Php中使用construct()声明构造方法,并且只能声明一个。
析构函数(方法)作用和构造方法正好相反,是对象被销毁之前最后一个被对象自动调用的方法。是PHP5中新添加的内容作用是用于实现在销毁一个对象之前执行一些特定的操作,诸如关闭文件和释放内存等。
13. 谈谈你对RESTful的理解。
开放性话题。
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
原则条件:
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答。
另一个重要的 REST 原则是分层系统,这表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。
14. php5中魔术方法有哪几个?请举例说明各自的用法。
PHP工程师说出10个即可。
1、__construct() :实例化对象时自动调用。
2、__destruct() :销毁对象或脚本执行结束时自动调用。
3、__call() :调用对象不存在得方法时执行此函数。
4、__get() :获取对象不存在的属性时执行此函数。
5、__set() :设置对象不存在的属性时执行此函数。
6、__isset() : 检测对象的某个属性是否存在时执行此函数。
7、__unset() :销毁对象的某个属性时执行此函数。
8、__toString() :将对象当作字符串输出时执行此函数。
9、__clone() :克隆对象时执行此函数。
10、__autoload() :实例化对象时,当类不存在时,执行此函数自动加载类。
11、__sleep() :serialize之前被调用,可以指定要序列化的对象属性。
12、__wakeup :unserialize之前被调用,可以执行对象的初始化工作。
13、__set_state() :调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
14、__invoke() :将对象当作函数来使用时执行此方法,通常不推荐这样做。
15. cookie 和session区别
session存在服务器,cookie存在浏览器;session安全性比cookie高;session为会话服务,在使用时需要开启服务,cookie不需要开启,可以直接使用。
cookie数据存放在第三方应用的浏览器上,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的COOKIE,进行COOKIE欺骗。考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
建议:将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE。
16. 谈谈如何优化网站性能。
(1).确认服务器是否能支撑当前访问量。
(2).优化数据库访问。
(3).禁止外部访问链接(盗链), 比如图片盗链。
(4).控制文件下载。
(5).使用不同主机分流。
(6).使用浏览统计软件,了解访问量,有针对性的进行优化。
17. 谈谈SQL语句优化有哪些方法?
(1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。
(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。
(3) 避免在索引列上使用计算
(4)避免在索引列上使用IS NULL和IS NOT NULL
(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(6)尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描
18. 什么是SQL注入?
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,注入者可以在表单中输入一段数据库查询代码并提交,程序将提交的信息拼凑生成一个完整sql语句,服务器被欺骗而执行该条恶意的SQL命令。注入者根据程序返回的结果,成功获取一些敏感数据,甚至控制整个服务器,这就是SQL注入。
19. ThinkPHP如何防止SQL注入?
(1)查询条件尽量使用数组方式,这是更为安全的方式;
(2)如果不得已必须使用字符串查询条件,使用预处理机制;
(3)开启数据字段类型验证,可以对数值数据类型做强制转换;(3.1版本开始已经强制进行字段类型验证了)
(4)使用自动验证和自动完成机制进行针对应用的自定义过滤;
(5)使用字段类型检查、自动验证和自动完成机制等避免恶意数据的输入。
20. 请简述一下数据库的优化?
从结构层:web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离
从储存层:采用合适的存储引擎,采用三范式
从设计层:采用分区分表,索引,表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存
sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行
21. 什么是工作分解结构和工作说明书?
开放性话题。
工作分解结构:简称WBS,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。即:项目→任务→工作→日常活动。工作分解结构以可交付成果为导向,对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。
工作说明书:
工作说明书:简称SOW,是对项目所要提供的产品或服务的叙述性的描述。对内部项目而言,项目发起者或投资人基于业务需求,或产品或服务的需求提出工作说明书。对外部项目而言,工作说明书作为投标文档的一部分从客户那里得到,如:邀标书,投标的信息,或作为合同的一部分得到。
22. 谈谈工作分解结构的分解原则、方法、方式、标准和用途。
分解原则
1、将主体目标逐步细化分解,最底层的日常活动可直接分派到个人去完成;
2、每个任务原则上要求分解到不能再细分为止;
3、日常活动要对应到人、时间和资金投入。
任务分解的方法:
1、采用树状结构进行分解;
2、以团队为中心,自上而下与自下而上的充分沟通,一对一个别交流与讨论,分解单项工作。
分解方式:
WBS的分解可以采用多种方式进行,包括:
1、按产品的物理结构分解。
2、按产品或项目的功能分解。
3、按照实施过程分解。
4、按照项目的地域分布分解。
5、按照项目的各个目标分解。
6、按部门分解。
7、按职能分解。
任务分解的标准:
1、分解后的活动结构清晰,从树根到树叶,一目了然,尽量避免盘根错节;
2、逻辑上形成一个大的活动,集成了所有的关键因素包含临时的里程碑和监控点,所有活动全部定义清楚,要细化到人、时间和资金投入。
WBS用途:
1、WBS是一个描述思路的规划和设计工具,帮助项目经理和项目团队确定和有效地管理项目的工作。
2、WBS是一个清晰地表示各项目工作之间的相互联系的结构设计工具。
3、WBS是一个展现项目全貌,详细说明为完成项目所必须完成的各项工作的计划工具。
4、WBS定义了里程碑事件,可以向高级管理层和客户报告项目完成情况,作为项目状况的报告工具。
23. 谈谈工作说明书的主要内容和功能。
主要内容(答出一二三四五和十二即可):
一、基本资料。主要包括岗位名称、岗位等级、岗位编码、定员标准、直接上下级、分析日期。
二、岗位职责。主要包括职责概述和职责范围。
三、监督与岗位关系。说明本岗位与其他岗位之间在横向与纵向的联系。
四、工作内容和要求。是岗位职责的具体化,即对本岗位所要从事的主要工作事项做出说明。
五、工作权限。为了确保工作的正常开展,必须赋予每个岗位不同的权限,但权限必须与工作责任相协调,相一致。
六、劳动条件和环境。指在一定时间空间范围内工作所涉及的各种物质条件。
七、工作时间。包含工作时间长度的规定和工作轮班制的设计等两方面内容。
八、资历。由工作经验和学历条件两个方面构成。
九、身体条件。结合岗位的性质、任务对员工的身体条件做出规定,包括体格和体力两项具体的要求。
十、心理品质要求。岗位心理品质及能力等方面要求,应紧密结合本岗位的性质和特点深入进行分析,并做出具体的规定。
十一、专业知识与技能要求。
十二、绩效考评。从品质、行为和绩效等多个方面对员工进行全面的考核和评价。
功能(答出1、2、3即可):
(1)让员工了解工作概要;
(2)建立工作程序和工作标准;
(3)阐明工作任务、责任与职权;
(4)为员工聘用、考核、培训等提供依据。
24. 谈谈如何实现怎么实现第三方登录?
第三方登陆主要是基于author协议来实现,下面简单说下实现流程:
1、首先我们需要以开发者的身份向第三方登陆平台申请接入应用,申请成功后,我们会获得一个appID和一个secrectID.
2、当我们的网站需接入第三方登陆时,会引导用户跳转到第三方的登陆授权页面,此时把之前申请的appID和secrectID带给登陆授权页面。
3、用户登陆成功后即得到授权,第三方会返回一个临时的code给我们的网站。
4、我们的网站接受到code后,再次向我们的第三方发起请求,并携带接收的code,从第三方获取access_token.
5、第三方处理请求后,会返回一个access_token给我们的网站,我们的网站获取到access_token后就可以调用第三方提供的接口了,比如获取用户信息等。最后把该用户信息存入到我们站点的数据库,并把信息保存到session中,实现用户的第三方登陆。
25. 谈谈对索引的理解。
开放性话题。
索引的优缺点
1、优点:
a)可以保证数据库表中每一行的数据的唯一性
b)可以大大加快数据的索引速度
c)加速表与表之间的连接,物别是在实现数据的参考完事性方面特别有意义
d)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
f)通过使用索引,可以在时间查询的过程中,使用优化隐藏器,提高系统的性能
2、缺点:
a) 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
b) 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
c) 以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度
3、建立索引的原则
a) 在经常需要搜索的列上,可以加快搜索的速度
b) 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
c) 在经常用在连接的列上,这些列主要是一外键,可以加快连接的速度
d) 在经经常需要根据范围进行搜索的列上创建索引,国为索引已经排序,其指定的范围是连续的
e) 在经常需要排序的列上,国为索引已经排序,这样可以利用索引的排序,加快排序井底时间
f) 在经常使用在where子句中的列上,加快条件的判断速度
26. get和post的区别
get是从服务器上获取数据,post是向服务器传送数据。
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。4.. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
27. 接口和抽象类的区别是什么?
抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。抽象类是通过关键字abstract来声明的。
抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法没有方法体,该方法天生就是要被子类重写的。
抽象方法的格式为:abstract function abstractMethod();
接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用 extends,子类实现接口使用implements。
28. bootstrap框架有哪些优点?
bootstrap是一款web开发框架,它由CSS,JavaScript,Html,三部分构成,它简洁灵活,使得web开发更加的快捷
优点:
①节省时间:使用bootstrap框架,可以大大的节省项目开发时间,它包含了很多现成的代码,如果需要使用,只需要找到合适的代码,插入合适的位置即可,此外,CSS是使用LESS编写,很多样式和设计都已经设计完成了
②定制化:bootstrap可以根据自己的项目,留取框架中自己需要的部分
③设计合理:
1. 栅格系统: bootstrap定义12格栅系统,在页面已经完成时,你可以根据合适的网格,以自己的需求改变行数和布局大小,样式已经开发完成了,只需要把代码放入合适的HTML代码位置即可
2. LESS: LESS是基于CSS之上的高级语言,其目的是使得CSS开发更加灵活,更加强大
3. JavaScript:bootstrap提供JavaScript库,该库超越了基本的架构和样式,开发者可以轻松的操作窗口警告框,工具提示框等,可避免了我们费神费力的写脚本
④一致性: bootstrap可以保证界面在不同平台的统一性,无论实在IE,Chrome等
⑤持续更新: bootstrap在不断的改进,更具规律性和持续性
⑥响应式: 无论是在PC端还是移动端,都可以保持界面的一致性
⑦文档多: bootstrap的非常多
29. HTTP 状态中302、401、403、 500代码含义?
302:临时转移成功,请求的内容已转移到新位置
401:代表未授权
403:禁止访问
500:服务器内部错误
(一二三四五原则:一、消息系列;二、成功系列;三、重定向系列;四、请求错误系列;五、服务器端错误系列)
30. 说明传值与传引用的区别。什么时候传值什么时候传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。
31. 请写出匹配11位手机号码的正儿表达式和匹配邮箱的正则表达式。
能写出关键部分即可。
手机号码正则表达式:
/^[1][3,4,5,7,8][0-9]{9} //1\d10 / 或 / 1 \d 10 /
电子邮箱正则表达式:
^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4} [azAZ09]+@[azAZ09]+(.[azAZ09]+)+ [ a − z A − Z 0 − 9 − ] + @ [ a − z A − Z 0 − 9 − ] + ( . [ a − z A − Z 0 − 9 − ] + ) +
/^a-z@([a-z0-9][-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/
32. 谈谈你所知道的设计模式。
开放性话题。列举出5个即可。
工厂模式、策略模式、单例模式、观察者模式、命令链模式。
33. 谈谈数据库查询中等连接、左连接和右连接的区别。
内连接,显示两个表中有联系的所有数据。
左连接,以左表为参照,显示所有数据。右表没有的字段,显示为null。
右连接,以右表为参照,显示所有数据。左表没有的字段,显示为null。
34. 面向对象的测试用例设计有几种方法?如何实现?
给类中的每个构造函数设计一组测试用例
组合类中的类变量、实例变量
组合类中的各种方法
根据前置条件和后置条件设计测试用例
根据代码设计测试用例
35. 主键、外键的作用,索引的优点与不足?
主键:是表中的唯一标示键。作用:保证实体的完整性;加快数据库的操作速度;增加新的表记录时,数据库会自动检索新记录的主键值,不允许该值与其他表中记录的主键重复;数据库会按主键值的顺序显示记录,如果没有设定主键,则按输入的顺序显示记录。
外键:是主键的从属,表示了两个表之间的联系。作用:使用外键可以避免冗余。
索引的优点: 1、通过创建唯一性的索引,可以保证表中数据的唯一性; 2、加速数据的检索速度; 3、加快表与表之间的连接; 4、在使用分组与排序数据检索时,可以显著检索分组与排序的时间; 5、在查询的过程中使用优化隐藏器,提供系统性能。
缺点:
1、创建索引需要时间,且随着数据量的增加而增加;
2、索引需要占用物理空间;
3、当对表中数据进行修改时,索引也要动态维护,降低了数据的维护速度。
36. 在C/C++中static有什么用途?(请至少说明两种)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用
37. 引用与指针有什么区别?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。

运维部分
1. 如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

  1. A B网络是通的,最少列出五种传输文件的服务
    nfs、ftp、scp、rsync、samba、http

  2. 简述Linux 文件系统通过i 节点把文件的逻辑结构和物理结构转换的工作过程。
    Linux 通过i 节点表将文件的逻辑结构和物理结构进行转换。
    i 节点是一个64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在i 节点表中最重要 的内容是磁盘地址表 。在磁盘地址表中有13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。Linux 文件系统通过把i 节点和文件名进行 连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i 节点号,通过该i 节点的磁盘地址表把分散存放的文件物 理块连接成文件的逻辑结构。

  3. 如何优化 Linux系统?
    调整文件描述符的数量。
    精简开机启动服务(crond rsyslog network sshd)。
    内核参数优化(/etc/sysctl.conf)。
    更改字符集,支持中文,但建议还是用英文字符集,防止乱码。
    锁定关键系统文件。
    更改默认的远程连接SSH服务端口及禁止root用户远程连接。
    定时自动更新服务器时间。
    清空/etc/issue,去除系统及内核版本登录前的屏幕显示。
    不用root,添加普通用户,通过sudo授权管理。
    配置国内yum源。
    关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)。

  4. Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?
    开机步骤:
    a、首先是bios加电自检、初始化,这个过程会检测相关硬件(cpu、内存、显卡、硬盘等)
    然后读取一个启动顺序,以硬盘为例,会读取硬盘中的MBR。
    b、加载内核读取/boot里边的配置文件。
    c、启动初始化进程,开始运行/sbin/init
    d、读取/etc/inittab确定运行级别
    e、根据/etc/rc.d/rcN.d加载开机启动程序,rcN.d都是链接文件,都指向/etc/rc.d/init.d再运行/etc/rc.d/rc.local
    f、用户登录(3种方式ssh、命令行、图形化)
    g、进入loginshell,以命令行为例,首先读取/etc/profile这个全局配置文件,然后再针对当前用户读取家目录中的 ~/.bash_profile和~/.bash_login和~/.profile
    h、最后一步就是打开non-loginshell,进入图形化后手动新建一个终端,但这个shell不读取/etc/profile
    忘记密码
    a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式
    b、选项Kernel…..按e键进行编辑
    c、在编辑界面rhgbquiet后加空格,然后输入”single”或”1”回车
    d、按b启动进入单用户模式
    f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

  5. 将普通用户test加入root组的命令是?
    usermod -G root test

  6. linux系统中添加路由的方法
    主机路由
    route add -host 192.168.197.100 dev eth0
    网关路由
    route add default gw 192.168.197.1
    网络路由
    route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1
    route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1

  7. 磁盘报错:nospace left on device,但是df-h查看空间没有满,为什么?
    原因:系统inode满了,因为所有的文件的文件名信息都是存放在inode里面的,文件内容是存放在block里面
    可以使用df -i 来查看inode的使用情况
    [root@mysql-1 download]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda2 1234576 138303 1096273 12% /
    tmpfs 60785 1 60784 1% /dev/shm
    /dev/sda1 51200 38 51162 1% /boot

  8. 如何查看当前的Linux服务器的运行级别?
    ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。

  9. 如何查看Linux的默认网关?
    用 “route -n” 和 “netstat -nr” 命令,我们可以查看默认网关。
    除了默认的网关信息,这两个命令还可以显示当前的路由表。

  10. 如何在Linux上重建初始化内存盘镜像文件?
    在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件。
    在CentOS 6.X / RHEL 6.X中,则用dracut命令来创建初始化内存盘文件。

  11. cpio命令是什么?
    cpio就是复制入和复制出的意思。
    cpio可以向一个归档文件(或单个文件)复制文件、列表,还可以从中提取文件。

  12. patch命令是什么?如何使用?
    patch命令就是用来将修改(或补丁)写进文本文件里。
    patch命令通常是接收diff的输出并把文件的旧版本转换为新版本。
    举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。
    创建一个diff文件给patch使用,旧文件和新文件要么都是单个的文件要么都是包含文件的目录,-r参数支持目录树递归。
    一旦diff文件创建好,我们就能在旧的文件上打上补丁,把它变成新文件。

  13. Linux系统中的/proc文件系统有什么用?
    /proc文件系统是一个基于内存的文件系统,其维护着关于当前正在运行的内核状态信息,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。
    这个文件系统所代表的并不是各种实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。

  14. Linux中的at命令有什么用?
    at命令用来安排一个程序在未来的做一次一次性执行。
    所有提交的任务都被放在/var/spool/at 目录下并且到了执行时间的时候通过atd守护进程来执行。

  15. 简述Linux系统的开机启动顺序,查询程序运行级别和修改运行级别。
    POST加电自检->MBR引导->GRUB->加载内核->启动init进程->读取/etc/inittab文件,/etc/init/*.conf文件->使用/etc/rc.d/rc.sysinit初始化脚本->执行/etc/rc.d/rc脚本(加载/etc/rc3.d/下所有脚本)->执行/etc/rc.d/rc.local->执行/bin/login登录程序
    查询程序运行级别:runlevel
    修改运行级别:init [0123456]

  16. 简述软链接和硬链接的区别。
    软链接是指创建一个新的文件,block里存放的是被链接文件的文件名指向,软链接的inode与源文件的inode不同,将源文件删除,然后重建,改变了inode,软链接文件仍然有效。
    硬链接是创建一个新的文件名,将它的inode指向源文件的inode,所以硬链接的inode和源文件是相同的,源文件被删除后,硬链接仍然可以有效。

  17. 一个shell 脚本手工可以执行,放入定时任务后不能执行,可能的原因?
    手工可以执行,表明脚本本身不存在逻辑上的问题,可能原因有以下几点
    1:定时任务书写有错误导致,执行的脚本没有写绝对路径,找不到脚本
    2:环境变量问题导致

  18. 说明系统/etc/inittab中各个启动级别的含意
    [root@centos6~]# tail /etc/inittab

Default runlevel. The runlevels used are:

0 - halt (Do NOT set initdefault to this) 关机

1 - Single user mode单用户模式

2 - Multiuser, without NFS (The same as 3,if you do not have networking) 多用户,没有NFS

3 - Full multiuser mode完整多用户模式

4 - unused

5 - X11桌面模式

6 - reboot (Do NOT set initdefault to this) 重启

#
id:3:initdefault: 默认

  1. 每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:
    00 15 * * 1 rsync -avzP /tmp/logs/*.log root@192.168.1.100:/tmp/logs

  2. 找到/tmp/目录下面的所有名称以”_s1.jpg”结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中
    find /tmp -type f -name “.*_sj.jpg” -mtime 1|xarges tar zxf /tmp/back.tar.gz

  3. 用netstat命令配合其他shell命令,按照源IP统计所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):
    [root@~]# netstat -an|grep ESTABLISHED
    tcp 0 52 139.224.199.85:22 101.47.33.86:51763 ESTABLISHED
    tcp 0 0 139.224.199.85:45368 106.11.68.13:80 ESTABLISHED
    [root@ ~]# netstat -an|grep ESTABLISHED|grep “:80”
    tcp 0 0 139.224.199.85:45368 106.11.68.13:80 ESTABLISHED
    [root@ ~]# netstat -an|grep ESTABLISHED|grep “:80”|awk ‘BEGIN{FS=”[[:space:]:]+”}{print 4}’  
    139.224.199.85  
    说明:FS 是字段分隔符  
    如果需要进行整理并排序的话,完整命令如下  
    [root@ ~]# netstat -an|grep ESTABLISHED|grep “:80”|awk ‘BEGIN{FS=”[[:space:]:]+”}{print
    4}’  139.224.199.85  说明:FS 是字段分隔符  如果需要进行整理并排序的话,完整命令如下  [root@ ~]# netstat -an|grep ESTABLISHED|grep “:80”|awk ‘BEGIN{FS=”[[:space:]:]+”}{print
    4}’|sort|uniq -c|sort -nr

  4. 说出netstat -an命令结果中最后一列status对应的不同网络连接状态含义
    [root@ ~]# netstat -an
    Active Internet connections (servers andestablished)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    tcp 0 0 139.24.65.45:54296 10.11.68.13:80 ESTABLISHED
    tcp 0 52 39.24.65.145:22 36.32.8.85:546 ESTABLISHED
    tcp 0 0 139.24.165.45:586 10.11.8.13:80 CLOSE_WAIT
    listen 服务启动后首先处于的状态(监听状态)
    established 建立连接,表示建立连接的两端可以正常通信了
    close_wait 对方主动关闭连接或网络异常而中断,因此状态会变成
    time_wait 主动断开连接,收到对方确认后的状态,相当于释放资源,可以设置些种状态的参数,也就是主动断开后,下一次再连接的时间间隔
    syn_sent 请求连接的状态,需要访问其它机器时首先发出的同步信号

  5. 如何实现nginx代理的节点访问日志记录的是真实访客的IP,不是代理的IP
    配置nginx.conf配置文件增加下同的标记内容
    server{
    listen 80;
    server_name blog.text.com;
    location / {
    proxy_pass http://test_servers;
    proxy_set_header Host host;proxysetheaderXForwardedFor h o s t ; p r o x y s e t h e a d e r X − F o r w a r d e d − F o r remote_addr;

    修改完成后,重新加载nginx即可,/application/nginx/sbin/nginx -s reload

  6. Nginx反向代理如何实现代理RS节点上的不同虚拟主机,请说出原理和配置方法或思路。
    客户端向反向代理发送请求,反向代理按一定的规则转发至目标服务器,并将返回的内容返回给客户端,可分为以下两种:
    配置内部不同服务器转发:
    upstream app1 {
    server 192.168.1.10:80 weight=5;
    server 192.168.1.11:80 weight=5;
    }
    upstream app2 {
    server 192.168.1.20:80 weight=5;
    server 192.168.1.21:80 weight=5;
    }
    配置server
    server{
    listern 80;
    server_name app.abc.com
    }
    配置匹配转发规则
    location /app1/ {
    proxy_pass http://example.com/app1;
    proxy_set_header Host host;  
     }  
    location/app2/ {  
      proxy_passhttp://example.com/app2;  
      proxy_set_header Host
    host;   }  location/app2/ {    proxy_passhttp://example.com/app2;    proxy_set_header Host
    host;
    }
    做为负载均衡
    配置负载均衡服务器池,也就是调度规则
    upstream test_servers {
    server 192.168.1.2:80 weight=5;
    server 192.168.1.4:80 weight=5;
    server 192.168.1.6:82 weight=15;
    }
    然后配置server标签,
    server {
    listen 80;
    server_name www.abc.com;
    proxy_pass http://test_servers;
    proxy_set_header Host $host
    }
    配置完成后,重新加载nginx服务

  7. 常用的Nginx模块,用来做什么
    rewrite模块,实现重写功能
    access模块:来源控制
    ssl模块:安全加密
    ngx_http_gzip_module:网络传输压缩模块
    ngx_http_proxy_module 模块实现代理
    ngx_http_upstream_module模块实现定义后端服务器列表
    ngx_cache_purge实现缓存清除功能

  8. linux系统nginx与Php环境,发现PHP-FPM进程高,请说出可能的原因以及如何解决
    php的插件程序与现有的PHP版本存在不兼容情况,解决方法从php.ini中禁止相关插件
    软件本身存在问题,需要开发协同运维一同处理,查找原因
    php程序存在死循环现象,使用服务器负载过高,解决方法使用top命令查看

  9. MYSQL 一主多从,主库宕机,如何合理切换到从库,其它从库如何处理?
    登陆所有从库查看post信息,使用POST最大的做为新的主库,然后将从为提升为新的主库,登陆从库(新的主库)执行stop slave,
    修改my.cnf配置文件,开启log-bin并重新启动数据库服务,登陆数据库执行restet master ,show master status\G;查看主库信息,最后创建授权同步用户与权限和网站使用数据库的用户与权限,同步所有机器的/etc/hosts文件(这时就体现了之前全网用域名则不是用IP的作用了,不然还得修改网站程序切换到新主库服务器IP上,否则无法连接到数据库)
    登陆其它从库,执行change master操作,查看同步状态

  10. 误操作drop语句导致数据库数据破坏,请给出恢复的实际大体步骤
    所有数据恢复的基础都在于备份,必须要有完整的备份,否则恢复无从谈起
    误操作导致的数据库破坏需要使用增量恢复的方法进行恢复数据库,具体步骤如下
    1、查看备份与binlog文件
    2、刷新并备份binlog文件
    mysqladmin -uroot -pmysql123 -S /data/mysql.sockflush-logs
    3、将binlog文件恢复成sql语句
    mysqlbinlog –no-defaults mysql-bin.000061 mysql-bin.000062 >bin.sql
    4、将其中误操作的语句删除(就是drop的动作)
    5、解压全备文件,恢复全备文件
    gzip -d mysql_backup_2016-10-12.sql.gz
    mysql -uroot -pmysql123 -S/data/3306/mysql.sock < mysql_backup_2016-10-12.sql
    如果有对表的操作,恢复数据时需要接表名
    6、恢复误操作前的binlog文件记录的sql语句
    mysql -uroot -pmysql123 -S/data/3306/mysql.sock < bin.sql
    最后登陆数据库,查看数据是否恢复成功,如果有确定的误操作时间,就直接恢复这段时间的数据即可

  11. binlog是什么?binlog记录的是什么?有几种模式及优缺点,企业中选择哪种模式做同步?
    binlog:是用于记录所有更新了数据的操作语句,语句以事件的形式保存,它描述数据的更改过程
    作用:用于实时备份数据,数据库的主从复制
    log_bin 打开记录binlog功能
    binlog的查看
    mysqlbinlog /home/mysql/binlog/binlog.000003
    binlog的删除:可分为自动与手动删除
    自动删除:
    能过binlog参数expire_logs_days来实现
    show binary logs;
    show variables like “expire_logs_days;”
    set gloable expire_logs_days=3;
    手工删除:
    reset master 删除主的binlog
    reset slave 删除从的中继日志
    三种模式:
    Row level模式 :日志会记录每一行数据被修改的形式,然后在从端对相同的数据进行修改
    优点:可以不记录执行SQL语句上下文相关的信息,只记录哪一条数据被修改,修改成什么样了
    缺点:所有执行的语句都当记录到日志文件中,而且都会以每行记录的修改来记录,会产生大量的日志内容
    statement模式:每一条修改数据的SQL都会记录master的bin-log中,slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL来执行
    优点:解决了上row level模式的缺点,不需要记录每一行数据的变化,减少日志量,可以得高性能
    缺点:由于记录的是执行语句,在此模式下会有主从无法复制的问题出现
    mixed自动模式:MYSQL会根据执行的每一条具体SQL语句来区分对待记录的日志格式,
    企业使用场景:
    1、如果不会用到mysql特殊的功能,基本都是默认的模式statement模式
    2、如果会到mysql的一些特殊功能,基本都是会使用row level模式

  12. 请详细描述MySQL主从复制原理。
    原理:主库开启binlog功能并授权从库连接主库同步的用户权限 ,将数据库的修改或变化生成bin-log日志,从库通过change mster的语句得到主库的相关信息,从库开启slave并连接主加进行相关验证,验证通过后,主库的IO线程根据从库的请求将相关位置点信息,与最新的blnlog信息发送给从库的IO线程,从库的IO线程将SQL语句的信息放在relay-log中,最后从库的SQL线程将relay-log中的SQL语句应用到从库中,实现主库与从库之间的数据同步,然后不断重新上述动作

  13. 误操作 drop 语句导致数据破坏,请给出恢复思想及实际步骤。
    方法1:
    1、通过防火墙禁止web等应用向主库写数据或者锁表,让数据库停止更新。

检查全备及binlog日志 ;

2、将全备恢复;
mysqlbinlog -d databasename mysql-bin.000014 > bin.sql
3、将所有binlog汇总,转成sql语句,剔除drop语句,恢复数据;
mysql -uroot -p123456 databasename < bin.sql
(注意数据的备份,不要破坏原始数据)
4、后续:(数据无法写入)所以无需恢复。
5、如果是update语句(也需要停止访问)
方法2:
1、如果主库持续有数据写入;
2、停止一个从库;然后在主库刷新binlog;
3、把mysql-bin.000014恢复成bin.sql(去掉drop语句);
4、把全备数据sql及操作前的增量bin.sql恢复到从库。
5、停止主库;把主库刷新后的binlog解析为sql恢复到从库;
6切换为从库提供服务;

方法2可能会有主键冲突等其它的问题,可以通过修改id或者延迟解决,尽量使用法1停库解决;

平时工作要注意数据库的权限管理及流程管理,防患于未然。

  1. 如何重置mysql root密码?
    一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:
    1、在SHELL环境下,使用mysqladmin命令设置:
    mysqladmin –u root –p password “新密码” 回车后要求输入旧密码
    2、在mysql>环境中,使用update命令,直接更新mysql库user表的数据:
    Update mysql.user set password=password(‘新密码’) where user=’root’;
    flush privileges;
    注意:mysql语句要以分号”;”结束
    3、在mysql>环境中,使用grant命令,修改root用户的授权权限。
    grant all on . to root@’localhost’ identified by ‘新密码’;

  2. 如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下:
    1、关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)
    2、使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务
    /usr/local/mysql/bin/mysqld_safe –skip-grant-table &
    3、使用空密码的root用户登录数据库,重新设置ROOT用户的密码
    #mysql -u root
    Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
    Mysql> flush privileges;

  3. 请详细描述http协议原理
    http协议:是客户端与服务端之间通信传输数据的基础,HTTP协议是基于TCP/IP协议之上的协议。
    原理包括四个过程:
    连接:浏览器与服务器建立连接,打开一个socket的虚拟文件,表明连接建立成功
    请求:浏览器通过socket向服务器提交请求(一般是GET或POST请示命令)
    应答:浏览器请求提交后,通过HTTP协议传送给服务器,服务器收到后进行处理将结果又通过HTTP回传给客户端,从而在客户端显示出所请求的页面
    关闭连接:当应答结束后,浏览器与服务器之间就断开连接

  4. 写出如何给apache增加virtualhost,让访问http://www.test.comhttp://www.test.cn的时候,都打开/var/www/html目录下面的文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值