项目面试题.doc

上传人:wj 文档编号:2520391 上传时间:2023-05-03 格式:DOC 页数:16 大小:84.82KB
下载 相关 举报
项目面试题.doc_第1页
第1页 / 共16页
项目面试题.doc_第2页
第2页 / 共16页
项目面试题.doc_第3页
第3页 / 共16页
项目面试题.doc_第4页
第4页 / 共16页
项目面试题.doc_第5页
第5页 / 共16页
项目面试题.doc_第6页
第6页 / 共16页
项目面试题.doc_第7页
第7页 / 共16页
项目面试题.doc_第8页
第8页 / 共16页
项目面试题.doc_第9页
第9页 / 共16页
项目面试题.doc_第10页
第10页 / 共16页
项目面试题.doc_第11页
第11页 / 共16页
项目面试题.doc_第12页
第12页 / 共16页
项目面试题.doc_第13页
第13页 / 共16页
项目面试题.doc_第14页
第14页 / 共16页
项目面试题.doc_第15页
第15页 / 共16页
项目面试题.doc_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

项目面试题.doc

《项目面试题.doc》由会员分享,可在线阅读,更多相关《项目面试题.doc(16页珍藏版)》请在冰点文库上搜索。

项目面试题.doc

项目面试题

就业面试题

─项目部分

1.总体

1.请简要描述一下你对ERP系统或CRM系统的理解(任选其一,可以是任何方面,100字以内即可)。

(5分)

ERP的科学定义是:

ERP─EnterpriseResourcePlanning企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。

;

ERP不仅仅是一个软件,更重要的是一个管理思想,它实现了企业内部资源和企业相关的外部资源的整合。

5T$QmW8I9v-uLK0is通过软件把企业的人、财、物、产、供、销及相应的物流、信息流、资金流、管理流、增值流等紧密5_地集成起来,实现资源优化和共享,这就是ERP

个人理解:

ERP就是企业资源计划系统,至于其它的我也不太清楚。

2.如何管理好一个团队?

3.你做了哪些项目,主要负责什么?

(1)准确说出每个项目的名称,分别讲出在项目当中所做的事情;

(2)非常熟悉自己所负责的事情,要考虑到面试官有可能问到的一些问题。

4.写一段你的工作开发经历800字,要突出技术亮点,人员怎么分配,使用什么版本控制等,背熟

5.项目的模块有哪些?

把项目当中的模块背诵清楚,

6.为什么项目要做这么久?

熟悉在项目开发中,各个环节所占的时间。

项目时间的弹性可以体现在售后维护这块,时间多出的话可以划在维护这块。

7.项目中为什么要用到AJAX?

8.项目中的数据都是从SQL中查出来的吗?

9.你做过的模块中,那个模块实现的最难?

10.你们的项目是怎么样管理的?

可以从配置管理入手回答

11.你们是怎样开发一个项目的?

--需求,设计,编码,测试,上线。

12.在项目中遇到困难是怎样解决的呢?

--先是自己试着在网上找解决方法,如果解决不了的话,寻求同事帮助,同事们也没办法的话,最后把问题升级由项目经理拿到公司里去找人解决。

如果上面还不能解决的话,改方案。

(一般到最后这种情况不会轻易出现,在调研时候会评审看看实现的难度在确定)

13.在项目中你们会做测试吗?

说说单元测试的流程。

--做,还会有交叉测试。

流程-跑功能点,参照是按照需求来测。

当然还会测一些验证相关的判断。

11.在这个项目中,你们都用到了哪些技术?

为什么要用这些技术?

14.你们这个项目卖了多少钱?

我们只是开发人员,合同价格是保密的,具体不是很清楚。

15..项目开发的流程。

(1.)需求分析:

通过对客户业务的了解和与客户对流程的讨论对需求进行基本建模,最终形成需求规格说明书。

(2.)总体设计:

通过分析需求信息,对系统的外部条件及内部业务需求进行抽象建模,最终形成概要设计说明文档。

(3.)详细设计:

此部分在对需求和概要设计的基础上进行系统的详细设计(也包含部分代码说明)。

(4.)开发编程:

对系统进行代码编写。

(5).测试分析与系统整合:

对所有功能模块进行模拟数据测试及其它相关性测试并整合所有模块功能。

(6.)现场支持:

系统上线试运行进行现场问题记录、解答。

(7.)系统运行支持:

系统正式推产后,对系统进行必要的维护和BUG修改。

16..你们做项目是怎样分工的?

(1、)产品经理的基本活动包括:

制定计划、协调资源、关注和控制计划进度、控制客户期望值。

(2、)开发经理是具体开发过程的领导者,必需由熟悉业务和开发技术的专家担任。

开发经理的职责是界定需求,确定适当的技术构架和体系,保证软件产品按照设计的标准开发。

(3、)设计师准确把握客户需求并提供可行的实现思路。

设计师的基本活动包括:

进行需求分析、进行构架设计和功能设计,按照规范编写相应的文档,将设计思路传播给开发人员、测试人员。

(4、)测试经理是测试活动的领导者,是公司内部认定的产品质量责任人(项目经理是对外的软件质量责任人)。

测试经理的责任是计划和组织测试人员对目标产品进行测试,发现bug、跟踪bug直到解决bug;计划和组织用户培训工作。

(5)开发人员根据设计师的设计成果进行具体编码工作,对自己的代码进行基本的单元测试。

通常3~4个开发人员组成一个开发小组,由一个teamleader带领进行开发活动。

开发小组teamleader由小组内技术和业务比较好的成员担任。

teamleader通常还负有进行详细设计和走查小组成员代码的职责。

考虑到teamleader需要进行详细设计、编写文档,和小组成员进行沟通,因此一个teamleader的开发任务不能超过开发人员的平均任务量。

对开发人员而言,必需具备产品开发所需要基本技术、技能,比如编程语音、数据库应用开发经验等。

如果发现开发人员不完全具备这些技能,开发经理和项目经理应该提供必要的内部或外部、培训,以使开发人员具备这些必要的技能。

(6)、测试人员根据测试经理的计划和测试总体方案对目标产品进行测试,编写测试case和测试代码,发现和跟踪bug;编写用户手册;进行用户培训和教育。

(7)、项目实施人员是针对工程性质的项目必需的人员配置。

项目实施人员负责软件系统安装配置、系统割接、运行期间的维护工作。

17..你们团队有多少个人?

分别由哪些角色组成。

根据项目规模,一般来说中型项目不超过12人。

角色参照上题。

18..你参与了哪些项目?

说出简历中列出的项目。

19..说说你最熟悉的项目。

对于自己来说,最熟悉的项目是最近的项目或是自己在项目中担任的工作比较多的项目。

20.你以前的公司是什么性质的?

明确是国有还是私营、合资或是外资等。

21.你以前的公司主要做的是哪一类的产品?

一般公司所做的产品具有专一性,需要根据自己所做的项目来确定。

22.你在你们以前的公司是怎样工作的?

项目流程及工作流程。

23.你做了哪些项目,主要负责什么?

(1)准确说出每个项目的名称,分别讲出在项目当中所做的事情;

(2)非常熟悉自己所负责的事情,要考虑到面试官有可能问到的一些问题。

24.项目的模块有哪些?

把项目当中的模块背诵清楚,

25.为什么项目要做这么久?

熟悉在项目开发中,各个环节所占的时间。

项目时间的弹性可以体现在售后维护这块,时间多出的话可以划在维护这块。

26..项目中为什么要用到AJAX?

27..项目中的数据都是从SQL中查出来的吗?

28..你做过的模块中,那个模块实现的最难?

29..你们的项目是怎么样管理的?

30..你们是怎样开发一个项目的?

软件项目的开发无非就是需求分析,设计,编码,测试,安装部署这几个大的方面的阶段。

需求分析阶段是最重要最具有挑战性也是消耗时间最长的一个阶段,一个软件的成败就与前期阶段的需求是否做的充分有必然的联系,然而我们如何去做好一个需求呢?

关键在于如何去与客户进行良好的沟通,揣摩到客户心目中所需要的产品是个啥样。

这个分析不仅仅只包含客户所提出的要求,因为在短暂的时间之内客户不可能把各个方面的需求都统一表达出来,那就意味着我们只能从客户的口中获取到20%或者30%的信息,那么至于还有百分之几十的信息我们又从哪个地方去获取呢?

那么我们就必须融入到社会的实践之中,从现实中去体验生活,去真正的了解客户的需求。

需求做好了就相当于完成了一半,那么设计方面就是将我们所获取的需求怎样系统化、自动化的联系起来,更加人性化的体现客户的需求,达到一个融会贯通的地步。

这一步也是很重要的,它直接联系着编码工作是否能够顺利的进展(其中包括数据库设计,各个功能模块的设计或整体框架的设计)。

编码阶段的时间比较少,但遇到的问题也是比较多,譬如:

技术上的、或者需求不清晰的地方,那么这个就存在着要项目组成员之间需要良好的沟通,以及项目经理对于各个方面的协助。

适当的召开例会,了解各项目组成员的工作情况,及时的将问题反馈以至于更好的解决问题,推动项目的快速前进。

测试在我们开发中是比不可少了一步,主要是提高项目的可用性质量,减少运转中差错。

包括:

单元测试、基本功能测试、系统测试、性能测试等方面,对于我们研发人员而言主要是单元测试,要保证自己的部分没有出现问题,才能保证整个系统的运行。

安装部署那就是项目的开发基本结束,但是后续还需要维护。

9.在项目中遇到困难是怎样解决的呢?

--寻求帮助,先是找周围的人,再则上网找,最后把问题升级由项目经理拿到公司里去找人解决。

如果上面还不能解决的话,改方案。

(一般到最后这种情况不会轻易出现,在调研时候会评审看看实现的难度在确定)

31..在项目中你们会做测试吗?

说说单元测试的流程

--做,还会有交叉测试。

流程-跑功能点,参照是按照需求来测。

当然还会测一些验证相关的判断。

11.在这个项目中,你们都用到了哪些技术?

为什么要用这些技术?

32..在这个项目中,你们都用到了哪些技术?

为什么要用这些技术?

33..你们这个项目卖了多少钱?

34..项目开发的流程。

35..你们做项目是怎样分工的?

36..你们团队有多少个人?

分别由哪些角色组成。

37..说说你最熟悉的项目。

38..你能单挑一个项目么?

2.需求

3.设计

1.通常,在软件的输入输出设计中,合理的要求是:

__B__。

A.数据尽量由用户来输入,以便给用户提供更大的自主性

B.输入过程应尽量容易,以减少错误的发生

C.不能在输入过程中检验数据的正确性

D.在输入过程中,为了不干扰用户,应尽量避免提示信息

2.医院病人的病历主要由三部分组成:

基本个人信息,如姓名、电话等;身体检查的信息,如体重、血型和血生化等;总诊断结果。

请为此设计一套病历管理系统,概要说明一下要用到的要素(类)及相互关系。

提示:

每个病人要检查的项目是不定的;

同一个项目可能有多种检测方法,如量体温,可能是口腔、腋窝和直肠;

同一个项目可以用不同的设备检测,检测结果的计量单位可能是不一样的,要求可以自由转换;

有些计量单位是简单的,如体重60kg,有些是复合的,如血生化中ALT881-2600U/L,有些是分类别的,如血型为A。

简略答案(可写在背后):

4.编码

5.测试

1.软件测试的目的是__C__。

A.证明软件系统中存在错误

B.找出软件系统中存在的所有错误

C.尽可能多地发现软件系统中的错误和缺陷

D.证明软件的正确性

2.你怎么测试一个安装程序?

3.集成测试都有那些策略?

4.公司接到一个项目,开发周期在一个月内,公司发现你能力强,让你做项目经理,你是怎样做一个简单明了的测试方案?

5.压力测试与性能测试的区别?

6.你在公司是怎么测试的,用了哪些工具?

7.你能接受手工测试吗?

8.怎样编写测试用例,用什么编写?

9.在发现Bug时,你们公司是怎么处理的,你是怎么做的?

10.你以前公司测试是怎样做的,谈谈具体细节?

11.你们在项目中什么时候开始测试?

12.你们用什么方式进行测试?

13.你们都做了什么测试?

你们是用什么工具测试的?

14.存储过程?

事务?

索引?

15.Unix和Linux查看端口使用情况是用什么命令?

16.Loadrunner的中对使用http/https协议录制的应用,脚本分为哪三个部分?

集合点只能插入到那个部分?

17.提交bug的具体流程?

bug的级别和优先级?

18.对于银行查账系统的界面你怎么设置它的测试用例功能点?

你怎么保证测试用例覆盖到100%?

19.对于一个安装程序它的测试应该从几个方面来考虑?

20.需求规格说明书需不需要测试人员测试?

单元测试是程序员测试还是测试人员测试?

21.黑盒测试和白盒测试的优缺点?

22.功能测试的标准流程是怎样的?

23.传统的系统测试跟基于web的系统测试有什么区别?

24.你们公司项目的权限管理是如何实现的?

6.发布

项目面试题

总体:

1.请结合一个具体的项目,举几个项目过程中出现的问题及产生原因。

1)需求不明确:

客户自己都没有想清楚系统要实现的功能,提不出需求。

我们的解决方案是延长需求开发的时间,采用多种方式如发调查问卷、开需求讨论会甚至同客户一起工作等做好需求获取,同时需求规格说明书要客户确认,并进行评审。

2)客户变更:

要求走变更申请流程,进行变更分析和评估。

在保证客户基本功能实现的情况下,对大工作量的改动(如:

涉及到软件体系结构变化的变更请求)会另外立项为一个维护开发的项目或作为本软件的二次开发版本提供。

2.在一个项目中如何保证软件的质量?

1)做项目计划的时候首先要根据需求确定质量目标和制定质量计划。

2)强调质量意识:

预防胜于检查,强调一次要事情做对,强调上游工序为下游提供合格的产出物,尽量减少各种缺陷的泄露。

3)写测试用例,进行单元测试、集成测试和系统测试。

4)每阶段都进行必要的评审,由需求,设计,开发,测试等各种角色的成员共同来从不同的角度来发现问题。

3.常用的软件开发模型有哪几种?

他们各有什么优缺点?

软件开发模型有瀑布模型、迭代模型、原型模型。

瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。

当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。

但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

(4)原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。

通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

迭代模型中,迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动。

所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:

(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。

与传统的瀑布模型相比较,迭代过程具有以下优点:

(1)降低了在一个增量上的开支风险。

如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

(2)降低了产品无法按照既定进度进入市场的风险。

通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

(3)加快了整个开发工作的进度。

因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

(4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。

因此,迭代过程这种模式使适应需求的变化会更容易些。

4.瀑布模型包括哪几个阶段,每一个阶段的里程碑式的产物是什么?

瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本阶段,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

里程碑产物:

项目总体计划、需求规格说明书、概要设计说明书、代码、软件测试报告和质量跟踪报告等。

5.你们公司项目风险控制是如何做的?

在项目立项阶段,进行可行性分析,分为技术可行性和经济可行性。

同时严格规范软件开发的各个阶段,对于软件开发过程中的各项计划、里程碑产物进行评审。

同时引入项目监督和控制机制,对项目开发过程中碰到的各类风险(政策与行规风险、公司组织风险、客户需求风险、技术风险、质量风险、项目管理风险、人力资源风险)进行跟踪、提出解决方案和反馈效果。

6.项目中的常见风险主要有什么?

政策与行规风险、公司组织风险、客户需求风险、技术风险、质量风险、项目管理风险、人力资源风险。

政策与行规风险:

项目开发依据的政策、文件、法规有变化

公司组织风险:

公司进行组织机构的调整,协调配合有问题

客户需求风险:

客户需求变更

技术风险:

技术上面实现有难度

质量风险:

项目各部分关联程度太大,软件质量难以保证

项目管理风险:

项目管理工作量繁重,对项目困难程度估计不足,项目总体计划制定有问题,导致进度滞后。

人力资源风险:

项目组人员不稳定,有可能出现离职、调任、突发的病事假。

7.你觉得在你的项目开发过程中碰到的最大的困难是什么?

交流沟通的问题,包括与客户、上级领导和同事的沟通。

对于客户首先要理解客户需要什么,要能够帮客户分清楚什么是主要需求、什么是次要需求,在碰到分歧的时候,要能够说服客户接受我们的解决方案。

对于上级领导,要能够及时反映项目状态,同时识别前进道路上的风险,更早的申请(人力、物力)资源。

对于同事要就相关联的工作进行充分沟通,达不成统一意见时,可请项目经理仲裁。

8.CMMI是什么?

CMMI是集成软件成熟度模型的简称,是一套完整的方法论和管理思想的体现,共分5级,由低到高分别为:

初始级、已管理级、已定义级、定量管理级和持续优化级。

其主要目的帮助软件企业进行过程改进,规范软件开发流程,提高软件开发成功率。

需求:

1.需求阶段的主要工作包括哪些?

答:

需求阶段分为需求开发与需求管理。

需求开发包括需求调研、需求分析、需求规格说明书编写、需求确认;需求管理包括需求变更、版本控制、需求跟踪。

2.需求分为哪几类?

分别包括什么内容?

答:

分为功能性需求和非功能性需求。

功能性需求包括业务需求、用户需求和功能需求;非功能性需求则包含性能、环境、用户界面、安全性、可靠性、可移植性、可维护性等。

3.需求获取的有哪几种方式?

并简述外部需求获取的优缺点。

主要有外部需求获取和内部需求获取两种方式。

外部需求获取方式:

1)需求研讨会:

优点:

了解全面;缺点:

成本高、难以控制

2)一对一用户访谈:

优点:

成本低、了解深入、容易控制;缺点:

不太全面

3)与用户一起工作:

优点:

深入了解细节、成本低、最容易控制;缺点:

很不全面

内部需求获取方式:

1)已有项目的文档

2)已有的项目产品

3)其他需求、开发人员

4)相关业务书籍

4.当用户提出需求变更的时候,你会怎么进行处理?

项目中遇到需求变更是很有可能的,而最重要的是怎么去平衡用户方和公司方。

直接拒绝用户,会导致用户信任度下降,对公司的项目工作造成不良影响;而接受则可能导致项目的成本增加甚至项目最终失败。

所以处理需求变更的时候,需三思而后行。

应及时告知项目经理,然后认真地分析需求变更对所做系统/模块/功能的影响,并尽可能地参与需求变更评审会议,阐述自己正确的观点。

5.假如让你来做合同类项目的需求调研工作,你觉得应该如何进行?

首先通过各种渠道了解客户方的主体业务,大致工作流程,再结合合同中定义的需求方面的内容,制定需求调研计划;接着根据对客户总体业务的了解,将工作分解和细化,制作需求调查问卷,并记录拿不准的业务问题;带着这些问卷和疑问,到客户方进行详细的需求调研工作,包括参与需求讨论会、与用户一起工作和面对面的访谈。

6.作为一个需求分析人员应具备什么样的能力?

1)倾听能力:

理解用户所表达的意思

2)交谈和提问能力:

使用合理、巧妙的技巧明确用户的需求

3)分析能力:

将需求进行细化、识别的能力

4)观察能力:

通过观察了解客户的工作模式及工作流程等

5)写作能力:

编写需求文档的能力

6)人际交往和协调能力:

获得用户信任、引导用户

7)对行业知识的掌握能力

设计:

1.软件概要设计阶段的基本任务是什么

1)设计软件系统结构,具体为:

(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。

(2)确定每个模块的功能。

(3)确定模块之间的调用关系。

(4)确定模块之间的接口,即模块之间传递的信息。

(5)评价模块结构的质量。

2)数据结构及数据库设计,含数据结构的设计及数据库的设计。

3)编写概要设计文档。

主要有:

概要设计说明书;数据库设计说明书;用户手册;修订测试计划。

4)设计评审

2.谈谈关于系统设计中架构、概要、详细设计的理解?

在软件系统的设计阶段,架构设计、概要设计和详细设计阐述了一个系统的设计和实现过程。

从系统分解为层次、层次内的模块以及相互的接口、模块分解为对象以及对象的接口、实现这些对象接口的方法。

但每个阶段都有自己独特的一部分。

架构设计重点在于将系统分层并产生层次内的模块、阐明模块之间的关系。

主要工作是根据架构分析和设计思想产生系统的架构图,并对架构图进行描述,说明分层的原因、层次的职责,并根据架构图绘制系统的物理部署图,描述系统的部署体系。

根据架构图进行模块的划分并阐明模块划分的理由,绘制模块物理图以及模块依赖图。

概要设计重点在于将模块分解为对象并阐明对象之间的关系,引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。

主要工作是根据该模块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图,分别加以描述并相应的描述模块异常的处理方法。

如果需要并描述数据视图。

详细设计重点在于对模块进行实现,将模块的对象分解为属性和方法,并阐述如何实现。

主要工作视根据模块概要设计详细描述对于模块内对象的实现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象的异常。

(需要绘制的主要为类图)

概括的说,架构解决系统核心用例以及关键性需求的设计,形成抽象的基础结构,划分模块、形成模块接口。

概要解决模块以及模块接口的实现,形成模块中核心对象以及对象的接口定义。

详细解决模块中具体对象的实现以及对象接口的实现。

3.谈谈你对三层架构(3-tierapplication)的理解及与MVC的区别?

三层架构(3-tierapplication)通常意义上的三层架构就是将整个业务应用划分为:

表现层(UI/View)、业务逻辑层(BLL/Service)、数据访问层(DAL/Dao)。

区分层次的目的即为了“高内聚,低耦合”的思想。

1)表现层(UI):

通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2)业务逻辑层(BLL):

针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3)数据访问层(DAL):

该层所做事务直接操作数据库,针对数据的增、删、改、查。

这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

表示层:

位于最外层(最上层),离用户最近。

用于显示数据和接收用户输入的数据,为用户提供一种交互式

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2