请用自我评价表:java
类别 | 具体技能和面试问题 | 如今回答 |
---|---|---|
语言 | 最拿手的计算机语言、代码量 | java/C。主要代码量仍是来源于学习时的做业、任务、课设等。 |
软件实现 | 你有没有在别人的代码的基础上改进,你是怎么读懂别人的代码的,你采起了什么办法来保证你的新功能不会影响原来的功能?你在开发中碰到的最复杂的bug是什么?你是如何解决的?这个bug出现的缘由是什么,你在未来应该如何去避免bug再出现? | 有,读懂别人代码,结合代码文字‘、注释、分块运行配合理解。若要保证不影响原有功能,尽可能以单独的模块进行编写,避免相互影响。bug遇到不少,因为没有开发过复杂的系统,因此常见的都是编程上的规范错误,例如非法的表达式开头、类型不兼容、非法的方法声明;须要返回类型、数组越界 |
行业洞察力 | 你最感兴趣的领域是什么,这个领域过去十年有什么创新,你分析过这个领域前十的产品吗,请分析一下他们的优劣,你要进入这个领域,如何创新 | 图形引擎领域,这个领域本来是与软件编程以及美工等两方面紧密相关的,可是近年来随着图形引擎产品的垄断形式造成,多数表明产品的开发工具更加可视化,相似近年来开放免费的unreal或unity,对编程能力要求愈来愈低,愈来愈看重开发者美术能力和创造力,与咱们传统的计算机专业存在愈来愈大的出入。若是要进入这方面领域,必须还要额外进行美工UI等方面的学习。 |
项目管理 | 你参加过项目管理吗,如何决定各个任务的优先顺序,若是项目不能及时完成,你要怎么办 | 任务始终以核心功能为第一目标,若是不能及时完成,争取宽限时间是第一选择、抛弃边缘内容为第二选择。 |
团队协做 | 描述你在项目中如何说服同伴采起你更好的方案,或是听取别人的意见改进本身的方案,如何说服懒惰的同伴加紧工做 | 按期进行会议,交流相互之间的意见。用客观工期的未能完成任务的后果来警示同伴加紧工做 |
理论素养 | 你上过什么数学,计算机或是理论课,举出具体的例子,如何帮你解决问题 | 高等数学、C、计算机组成原理、java等,尤为是计算机组成原理,包含了一些基础性的计算机常识,是咱们目前这种仅偏向编程学习的学生反而缺乏的必要知识。 |
需求分析 | 你作过多少个有实际用户的项目,用户人数多少,你的项目有什么创新之处 | 目前没有作过有实际用户的项目 |
工具/社区 | 你在各类开发平台都使用过什么工具,本身写过什么工具来改进工做效率?给社区贡献过什么工具和代码?Github有分享代码么?你写的技术博客坚持了多久,读者最多的是那一篇? | VC++、VS、eclipse等,没有写过非做业性质的技术博客 |
质量意识 | 你是怎么作代码复审的,你加入咱们团队后,能帮助咱们提升代码质量么,请具体说怎么提升? | 以运行稳定、有效为第一要求。再进行各个模块的单独测试,无BUG为基础目标,精简无效代码为进一步的目标。 |
自我管理 | 整年级你专业排名多少?你从刚入学(大学一年级)到如今的排名有变化吗?你如何解释你的排名的变化? | 110名左右,处于靠后位置。对本身的要求不够严格,任务目的性过强,自主动力低。 |
编号 | 问题 | 个人回答 |
---|---|---|
1 | 保持高标准,不要受制于破窗理论(broken windows theory)。当你看到不靠谱的设计、糟糕的代码、过期的文档和测试用例的时候,不要想 “既然别人的代码已经这样了,个人代码也能够随便一点啦。” | 若是有明确要求,我能够作好。 |
2 | 主动解决问题。当看到不靠谱的设计,糟糕的代码的时候,不要想“可能别人会来管这个事情” ,或者“我下个月发一个邮件让你们讨论一下”。要主动地把问题给解决了。 | 若是有明确要求,我能够作好。 |
3 | 常常给本身充电,身体训练是运动员生活的一部分,学习是软件工程师职业的伴侣。每半年就要了解和学习一些新的相关技术。经过按期分享(面对面的分享,写技术博客等)来确保本身真正掌握了新技术。 | 有时分享。 |
4 | DRY (Don't Repeat Yourself)——别重复。在一个系统中,每个知识点都应该有一个无异议的、正规的表现形式。 | 不但主动作, 还会影响同事一块儿作好 |
5 | 消除不相关模块之间的影响,在设计模块的时候,要让它们目标明确并单一,能独立存在,没有不明确的外部依赖。 | 不但主动作, 还会影响同事一块儿作好 |
6 | 经过快速原型来学习,快速原型的目的是学习,它的价值不在于代码,而在于你经过快速原型学到了什么。 | 一直主动这样作 |
7 | 设计要接近问题领域,在设计的时候,要接近你目标用户的语言和环境。 一直主动这样作 | |
8 | 估计任务所花费的时间,避免意外。在开始工做的时候,要作出时间和潜在影响的估计,并通告相关人士,避免最后关头意外发生。工做中要告知可能的时间变化,过后要总结。 | 若是有明确要求,我能够作好。 |
9 | 图形界面的工具备它的长处,可是不要忘了命令行工具也能够发挥很高的效率,特别是能够用脚本构建各类组合命令的时候。 | 正在学习命令行工具 |
10 | 有不少代码编辑器,请把其中一个用得很是熟练。让编辑器能够实现本身的定制,能够用脚本驱动,用起来驾轻就熟。 | 随意 |
11 | 理解经常使用的设计模式,并知道择机而用。设计模式不错,更重要的是知道它的目的是什么,何时用,何时不用。 | 历来没据说过 |
12 | 代码版本管理工具是你代码的保障,重要的代码必定要有代码版本管理。 | 领导要求才用 |
13 | 在debug的时候,不要惊慌,想一想致使问题的缘由可能在哪里。一步一步地找到缘由。要在实践中运用工具,善于分析日志(log),从中找到bug。同时,在本身的代码里面加 log. | 历来没据说过 |
14 | 重要的接口要用形式化的“合同”来规定。用文档和断言、自动化测试等工具来保证代码的确按照合同来作事,很少也很多。使用断言 (assertion) 或者其余技术来验证代码中的假设,你认为不可能发生的事情在现实世界中每每会发生。 | 历来没据说过 |
15 | 只在异常的状况下才使用异常 (Exception), 不加判断地过多使用异常,会下降代码的效率和可维护性。记住不要用异常来传递正常的信息。 | 若是有明确要求,我能够作好 |
16 | 有始有终。若是某个函数申请了空间或其余资源,这个函数负责释放这些资源。 | 有时这样作 |
17 | 当你的软件有多种技术结合在一块儿的时候,要采用松耦合的配置模式,而不是要把全部代码都混到一块儿。 | 历来没据说过 |
18 | 把经常使用模块的功能打形成独立的服务,经过良好的界面 (API) 来调用不一样的服务。 | 若是有明确要求,我能够作好 |
19 | 在设计中考虑对并行的支持,这样你的API 设计会比较容易扩展。 | 考虑在适当的层次支持并行 |
20 | 在设计中把展示模块 (View) 和实体模块 (Model) 分开,这样你的设计会更有灵活性。 | 随缘啦 |
21 | 重视算法的效率,在开始写以前就要估计好算法的效率是哪个数量级上的(big-O)。 | 主动测试程序效率,以验证估算 |
22 | 在实际的运行场景中测试你的算法,不要停留在数学分析层面。有时候一个小小的实际因素 (是否支持大小写敏感的排序,数据是否支持多语言)会致使算法效率的巨大变化。 | 想用,但不知道工具 |
23 | 常常重构代码,同时注意要解决问题的根源。 | 历来没据说过 |
24 | 在开始设计的时候就要考虑如何测试 ,若是代码出了问题,有log 来辅助debug 么? 尽早测试,常常测试,争取实现自动化测试,争取每个构建的版本都能有某些自动测试。 | 一直主动这样作 |
25 | 代码生成工具能够生成一堆一堆的代码,在正式使用它们以前,要确保你能理解它们,而且必要的时候能debug 这些代码。 | 一直主动这样作 |
26 | 和一个实际的用户一块儿使用软件,得到第一手反馈。 | 一直主动这样作 |
27 | 在自动测试的时候,要有意引地入bug,来保证自动测试的确能捕获这些错误。 | 若是有明确要求,我能够作好 |
28 | 若是测试没有作完,那么开发也没有作完。 | 一直主动这样作 |
29 | 适当地追求代码覆盖率:每一行的代码都覆盖了,可是程序未必正确。要确保程序覆盖了不一样的程序状态和各类组合条件。 | 一直主动这样作 |
30 | 若是团队成员碰到了一个有广泛意义的bug, 应该创建一个测试用例抓住之后将会出现的相似的bug。 | 一直主动这样作 |
31 | 测试:多走一步,多考虑一层。若是程序运行了一星期不退出,若是用户的屏幕分辨率再提升一个档次,这个程序会出什么可能的错误? | 一直主动这样作 |
32 | (带领团队)了解用户的指望值,稍稍超出用户的指望值,让用户有惊喜。 | 不但主动作, 还会影响同事一块儿作好 |
33 | (带领团队) 不要停留在被动地收集需求,要挖掘需求。真正的需求可能被过期的假设、对用户的误解或其余因素所遮挡。 | 不但主动作, 还会影响同事一块儿作好 |
34 | (带领团队)把全部的术语和项目相关的名词、缩写等都放在一个地方。 | 不但主动作, 还会影响同事一块儿作好 |
35 | (带领团队)不要依赖于某我的的手动操做,而是要把这些操做都作成有相关权限的人士都能运行的脚本。这样就不会出现由于某人休假而项目被卡住的状况。 | 不但主动作, 还会影响同事一块儿作好 |
36 | (带领团队)要让重用变得更容易。一个软件团队要创造一种环境,让你们有轻松的心态来尝试各类想法 (例如,模块的重用,效能的提高,等)。 | 不但主动作, 还会影响同事一块儿作好 |
37 | (带领团队)在每一次迭代以后,都要总结经验,让下一次迭代的进度安排更可靠,质量更高。 | 不但主动作, 还会影响同事一块儿作好 |
38 | (带领团队)团队中每每会有矛盾产生,做为领头人,怎么办? | 不但有明确和一致的处理原则,并且对于影响团队士气的任何事情追究到底 |
从咱们敏捷团队开发的经验来看,按期乃至每日的团队会议很好的解决了这一问题,实现了团队高效率的同步、交流和改进程序员
的存在吗?为什么做者反而将完美主义者定义为“项目的风险”?面试
从团队开发的经验来看,咱们给代码编写、复审、测试、改进都留有合理充分的时间空间,所以代码问题是能够规避‘、改进的问题,不会给项目成败最终带来影响。追求完美反而会大大拖慢项目进程,下降效率。算法
自动排版、模块化等功能的插件,能够直接实现自动化的规范处理,依赖这些工具,能够大幅减小程序员,尤为是
新程序员在这方面的时间消耗,既然如此,为何不主动推广此类功能的普遍应用,取代人工的操做呢?编程
咱们在开发过程当中,也使用到了不少辅助规范类工具,就好比博客的markdown编辑器,能够用直观方式对比效果。可是考虑到市场的碎片化发展,各类工具的利用可能反而会存在不可调和的误差,而缺乏了审查规范的能力,反而会下降效率windows