类别 | 具体技能和面试问题 | 如今的回答(注明年级) | 毕业后的回答 |
---|---|---|---|
语言 | 最拿手的计算机语言之一,代码量多少?(偏web前端,PC/Mobile App) | java吧,代码量不知道有没有六千 | |
语言 | 最拿手的计算机语言之二,代码量多少?(偏后端,数据处理,网站后台,机器学习,等) | 没有 | |
软件实现 | (阅读代码的能力,实现,单元测试) 你有没有在别人代码的基础上改进,你是怎么读懂别人的代码的,你采起了什么办法来保证你的新功能不会影响原来的功能? 你在开发中碰到最复杂的bug是什么,你是如何解决的? 这个bug出现的缘由是什么,你在未来应该怎么去避免bug再出现? |
没有在别人的代码基础上改过代码; java课设的代码吧,在开发过程当中遇到的bug应该没有说什么最复杂的,要么就是本身逻辑没思考要么问同窗解决的。 |
|
软件测试 | (测试方法、测试工具、测试实践、代码覆盖率) 你如何测试你本身写的代码? 你如何测试别人的代码? 你掌握了多少种测试工具和方法? 你写过测试工具么? 你如何对一个网站进行压力测试和效能测试? 你如何测试一个软件的人机界面(ux/ui)? |
目前只会经过print来测试本身写代码; 没有测试过别人的代码; 经过print测试,单元测试; 没写过测试工具; 目前还没有为网站进行过压力测试,也没有测试过一个软件的人际界面 |
|
效能分析 | 效能分析,效能改进, 你写过最复杂的代码是什么? 你是如何测量和改进它的效能的,用了什么工具,如何分析的? |
平时写代码时并无关注到效能这一块 | |
需求分析 | (需求分析,典型用户,场景,创新) 你作过多少个有实际用户的项目,用户最多有多少? 你的项目有什么创新的地方? |
没有作过有实际项目的用户 | |
行业洞察力 | 你最感兴趣的领域是什么? 这个领域过去10年经历了哪些创新? 你分析过这个领域前10名产品吗?请分析一下他们的优点,你要进入这个领域,应该如何创新? |
貌似并无最感兴趣的领域,目前还在思考毕业出路o(╥﹏╥)o | |
项目管理 | 你参与过项目管理么? 请描述一下两个当下流行的开发方法在你的项目中的具体应用状况; 请问你如何决定项目中各类任务的优先次序,有什么理论来支持你的作法?若是你忽然发现项目不能按时完成,你做为项目领导,有什么办法? |
参与过,就此次的项目,一、需求沟通阶段二、原型设计阶段三、技术开发阶段四、测试交付阶段; | |
软件设计 | 你作过架构设计,模块化设计,接口设计么? 请说明一下你为什么是这样设计,你比较过什么不一样的设计方式,你的设计取得了什么结果? |
java中作过接口设计,将某些对象共有的功能设计成接口,多态,方便使用。 | |
质量意识 | (代码复审/代码规范/代码质量)你是怎么作代码复审的,你加入咱们团队后,能帮助咱们提升代码质量么,请具体说怎么提升? | 查看代码是否有按照代码设计规范和代码风格规范进行编写,确认代码是否正确解决了问题。 | |
工具/社区 | Software Tools(performance tool,version control,work item,TFS) 你在各类开发平台(web,linux,PC,mobile,machine,learning)都是用过什么样的工具,本身写过什么工具来改进工做效率?你写的技术博客坚持了多久,读者最多的是哪一篇? |
eclipse、v有c6.0、vs、NetBeans、微信开发平台;没写过什么工具; 没有写过什么技术博客 |
|
团队协做 | Work with others(协同工做,提供反馈,说服别人)请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的意见,改进了本身的方案? 你如何说服懒惰的同伴加紧工做,实现团队的目标? |
用事实数据证实; 根据别人提出意见查看本身代码是否存在这种问题,思考这个意见是否有被采起的必要,而后再考虑是否要改进本身的方案; |
|
理论素养 | 你上过什么数学,计算机或其余理论课,请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题。 | 高数、离散、线代、几率,数字逻辑,操做系统; 写代码时有时会用到高数的一些知识,操做系统让学习Linux管理课程比较好理解 |
|
自我管理 | 整年级你专业排名多少?你从刚入学(大学一年级)到如今的排名有变化吗? 你如何解释你的排名的变化? |
大三上23名;有变化; 学习动力不够足,不知道本身应该学些什么,不知道往哪一个方向走 |
咱们在课程开始之初,曾经要求你们针对软件工程提出问题:我的阅读做业2,那么在通过alpha阶段,你们是否对软件工程有了必定的了解?请结合本身提出的问题进行回答前端
问题一java
书中提到:软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计。linux
问:在第一节软件工程课上,老师就讲了一下这个学期的教学安排,其中就有提到在作团队项目时,有个环节就是要进行成员交换。对于这个我不是很能理解,当你在这个团队已经一段时间,足够熟悉这个项目的需求以及程序的设计,而且跟其余成员也有必定的配合度,忽然交换成员,若是是能力较强的成员那却是影响不大,可是能力稍差的,则又须要必定时间去磨合,去熟悉程序的设计。这不是多费了一份功夫吗?程序员
回答:我想这个应该是想让咱们模拟现实生活中软件团队人员的流动。在实际中,企业管理上软件团队是会流动的,多是现有团队有解决不了的技术困难,须要有掌握新技术新知识人员的支持,也有多是现有团队在负责这个项目的同时还兼有其余任务,因此须要人员的帮忙。而咱们课程设计中的团队成员交换,就是为了让咱们模拟在企业管理上可能出现的人员流动问题咱们要如何去适应它,当咱们被要求调入一个新的团队,咱们是不可能说拒绝的,不服从上级的要求,因此做为新的成员咱们就须要尽快的读懂已有的程序,了解程序的设计,尽快的投入到新的团队里协助尽心团队开发。web
问题三面试
书中提到:程序各方面的质量取决于一对程序员中各方面水平较高的那一位编程
问:一个很现实的问题就是队员的问题。咱们平时上课作实验有时候就是得搭档着作,作课设的时候也有须要搭档着作的时候,那么在团队里总有人能力较强有人能力不强。像在两我的的结对中,万一有一方能力较差一点,总不能全部事情都让另外一方去作。这样能力较弱的一方都没学到什么,更甚者两个编程能力都不强的人结对又该如何保证代码质量,要怎么去处理这个问题?在团队里,要怎么正确的给每一个人分配工做,又要怎么的把每一个人作的部分整合起来?小程序
回答:宝玉老师在给我一个同窗关于这个问题的回复是这样:“一个项目,并不是要教条式的自始至终结对,尤为是在项目初期选择一些模块进行结对便可,结对主要仍是让水平低的能跟着水平高的养成良好的习惯,造成统一的规范”。结对编程主要是让咱们有一个互相学习、互相磨合的机会,在水平能力高的人带领下养成一个良好的编程规范,在相互交流中,相互学习和传递经验。咱们不须要一直规矩着秉着结对的观念从始至终结对编程,只须要在有些须要的模块上进行结对便可。后端
问题四微信小程序
书中提到:常常发布可用的软件,发布间隔能够从几周到几个月,能短则短
问:一个可用的软件,并不等于一个好用,用户满意的软件。在经过百度搜索后看到,提到敏捷开发的一项主张——“简单”,主张最简单的解决方案就是最好的解决方案。不要过度构建你的软件。可是若是是一款简单的软件,当它在发布间隔能短则短的状况下发布,那么若是用户发现并无它所须要的功能,就不会喜欢它,即便以后有更新版本也不必定还会愿意去下载。在这发布间隔短,主张简单的状况下,如何保证用户还会下载最新版,如何保证软件的用户使用量?
回答:在这一段时间的软件工程课程的学习中,咱们有学到两个概念需求分析和mvp(最小功能集)。在作一个项目开发以前咱们是须要作需求分析的,咱们须要知道咱们所要开发的这个软件的软件需求(对产品功能性的需求、产品开发过程的需求、非功能性的需求以及综合需求),软件产品的利益相关者,由于不可能一次性知足全部利益相关者的要求,可是要获取到这个利益相关者的需求,也就是用户需求。mvp的概念是实现产品的最核心功能。而问题中提到的“在这发布间隔短,主张简单的状况下,如何保证用户还会下载最新版,如何保证软件的用户使用量?”问题,实际上在作敏捷开发前,已经作好了需求分析,了解到了用户所需,而且所说的主张简单,实际上是mvp最核心的功能,这是在了解用户需求下所作的选择,因此在这状况下是有保证软件的用户使用量的。
问题一
软件工程的教学和培训目标有提到
经过必定的软件流程,在预计的时间里发布"足够好"的软件。
问:对于这个"足够好"的概念还不是很清楚,书上有提到bug的定义:软件的行为和用户的指望值不同。bug的多少能够用来衡量一个软件的质量。实际上每一个用户的指望确定是不同的,有些人以为这个设计对于他的使用来讲就是个bug,可是实际上这个设计就是这么设计的它不是bug。跟上次做业2提到的问题例子同样,百度主页按键的设置问题,所谓的"足够好"是针对占大多数的用户的吗?
问题二
第一章中提到
软件开发的复杂性:大型软件(操做系统、办公软件、搜索引擎)有超过百万行的源代码,上万个不一样的文件。而软件工程师一般一次只能看到30—80行源代码(至关于显示器的一屏),他们的智力、记忆力和常人差很少。
问:那么在这种状况下,咱们应该怎么才能发现的了错误而且可以将错误排除掉呢?在这种状况下,我以为进行排错是有必定难度的,既然软件工程师的记忆力跟常人差很少,只能看到30-80行代码,由于咱们记忆量有限,当咱们记忆过多的东西的时候就容易忘记以前的所记忆的东西,那么咱们应该怎么去锻炼本身发现错误和排除错误的能力呢?有时候在咱们编写代码的时候,也许只是一处代码写错了,可是却提示了一大片的报错信息,这种时候咱们应该怎么解决?
问题三
在第八章需求分析有提到
软件开发不可能一次知足全部利益相关者的要求,可是咱们必定要让相关角色在这个阶段有机会提出他们的需求和意见。
问:书中提到的软件的相关利益者有不少,用户、顾客、市场分析着、监管机构、系统/应用集成商、软件团队和软件工程师等,虽然咱们说到要有机会让相关角色参与到提需求和提意见中,可是咱们应该如何判断在这个阶段哪一个角色的需求和意见是最须要考虑的,由于咱们作不到知足全部相关角色的需求和意见,因此做为一个软件开发团队,咱们应该怎么协调某个阶段里相关软件利益相关者的需求和意见的优先级呢?
问:在开发的时候,每一个人都会分配必定的任务去完成。在咱们此次alpha阶段的开发中,咱们作的是微信小程序项目,关于小程序编程语言的学习,咱们在开发中都是边学边作的,可是每一个人对于熟悉一门新的编程语言的能力是不同的,有的人理解能力高几个小时就能摸索出大概的门路,可是有的人要花个几天的时间来理解这门语言,然而咱们如今是处于alpha冲刺阶段,咱们是应该让这我的继续本身学习他那部分任务代码的学习,仍是应该分出人员去指导他的学习,这样会影响冲刺阶段的任务的完成吗?咱们在此次开发并无分配人员去指导,最后那部分功能没有实现成功,咱们就把它取消掉了。这时候咱们应该怎么处理?
问:在此次项目alpha冲刺阶段,咱们只有两周的时间来进行冲刺,由于时间比较短,有时候会遇到项目就要截止发布内部测试版了,可是有些功能或者bug一直达不到预期的效果(未实现),这种时候咱们要怎么进行测试,在开发人员已知本身功能还没有完善或bug还未解决的前提下,咱们还要进行测试吗,或者直接发布内部测试版了?咱们应该怎么去衡量着二者之间的关系?在测试阶段,由于咱们小组有五人,开发人员三人,其他两人测试(经验能力较其余比较不足)开发人员是应该加入到测试中,仍是说主导项目的测试,若是是参与到项目测试中,然而测试人员编程能力,经验不足没法写出合适的测试用例,这该怎么解决,若是是主导项目测试,那么安排的测试人员的又有什么用?