技术管理面试题

技术管理面试题

1 职业规划

1.1 你为什么选择软件开发行业?

  • 获得成就感:许多热爱音乐、戏剧等艺术的人,哪怕作品无人问津,也仍然愿意专注其中。因为这些极具创造性的活动,让人感受到成就和乐趣。编程也是一种创造性活动,虽然有很多条条框框,但在这个约束里也可以发挥出极大的创造力。热爱编程和软件开发的的人,会解决技术难题而获得极大的快乐。喜欢的事情恰好还是市场上需要的技能,那就是世界上最幸运的事情。

  • 相对的高收益:从近二十年软件和互联网产业发展来看,程序员的确是高薪职业。许多互联网公司开发人员的薪资远远高于所在地的其他职业,当然辛苦程度也可想而知。软件产业依然是一个蕴含巨大潜力、创造巨大价值的产业。对于大部分普通人来说,编程是一个不太需要拼爹的行业,只要敢拼就得到足够的地位和回报。

1.2 你最喜欢的编程语言是什么?

最喜欢的编程语言是Python和Java。

与 C/C++、Java、C# 等语言相比,Python 的代码格式要求比较宽松,语法限制以及特殊场景非常少,用户在编写代码时比较舒服,不用在细枝末节上花费太多精力,运行效率也够用。

Java语言面向对象的编程语言,吸收了C++语言的优点,还摒弃掉C++语言里的多继承、指针等难以理解的概念。Java 也有强大的内存管理工具,内存分配、重新分配和释放都由运行时的内置组件自动处理,这减少开发人员的心智负担,提高程序质量。由于Java语言功能强大和简单易用,大型企业使用的都是Java语言开发项目。

1.3 你为什么想要做管理者?

(1)管理者有更高的收入和待遇,还有横向匹配的资源,如他人的尊重、晋升机会。
(2)管理者接触到更多的信息,完成更多更难的任务,获得更大的成就感。
(3)管理者有机会站在更高的角度观察和思考问题,提高自我认知水平。

1.4 以前的雇主或者同事如何评价你?

(1)悟性强、适应力强,根据工作调整方法和心态。
(2)乐于助人,团队影响力强,专业能力强。
(3)勤恳务实,善于学习,注重个人成长。

1.5 你理想的工作环境是怎样的?

(1)合理的工资待遇:一份符合自身能力和经验的工资,也代表公司对个人的认可。
(2)良好的工作氛围:心受委屈了也是离职的重要原因,良好的氛围是高效工作的基本保障。  
(3)发展空间和前景:在工作中得到成长,能力得到提升,下一份工作能更值钱。  
(4)公司管理合规合法:公司遵循规章制度和法律法规,按规定缴纳五险一金,工资按时足额发放。

1.7 哪些技能可以帮你成为有效的管理者?

(1)沟通技能:更好地与团队成员沟通,理解团队成员的想法和需求
(2)领导力:激发团队成员的积极性,激励团队成员完成任务。
(3)决策力:更好地分析问题,并能够做出正确的决定。
(4)组织能力:更好地组织团队成员,团结团队成员完成任务。
(5)解决问题:更好地分析问题,指导团队成员完成任务。

1.8 作为技术主管,你的目标是什么?

技术团队的目标是用技术实现软件产品,让业务可以降本增效。技术主管的目标是:建设和稳固技术团队,提高日常研发的效率,保障线上系统的稳定。大部分工作针对具体研发任务和技术事务, 60% ~ 70% 的时间花在了开发任务分配、开发实践、技术架构评审、代码审核和风险识别上,余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。

2 团队管理

2.1 如果团队成员建议使用新的硬件或软件,你如何回应?

如果可以提高工作效率,评估成本和开销,尝试在小范围内试用。如果达到预期的效果,尝试大面积推广。

2.2 如何帮助团队成员制定目标?

底线:完成工作的最低要求,比如需求延期不超过1天、解决线上bug不超过2小时。
目标:完成工作的基本目标,比如完善了业务系统的重要功能、创造了哪些产值。
挑战:在完成目标的基础上,把工作做得更快更好,比如提出了什么方案,提高多少工作效率。

2.3 如何组建合适的团队成员?

团队需要具备三种人才:善于决策的人、善于发现问题的人、擅长处理人际关系的人。

不需要每一位团队成员身上同时都具有以上三方面的能力,但是需要通过人员配置来让团队同时具备以上的能力。在现实团队当中,有些团队可能技术专家很多,人际关系能手比较少,团队很难形成强凝聚力,或者和谐的人际关系。其次在团队配置的时候,我们还需要考虑的问题是团队的规模。理想的团队规模是多大呢?团队需要有一定数量的人才,能够更好地发挥优势互补的作用,4~5个人是必须的。

团队规模会带来第二个方面的影响,团队沟通以及合作的难易程度,当团队人数增加的时候,团队成员之间的合作问题会显著增加。随着人数的增加,团队内部的信任难以形成,社会堕化现象会加剧彼此之间的协调,在设计团队的时候,有研究建议说团队的人数最好不要超过十人,超过十人的团队会难以有效管理。理想团队的规模5~9个之间,既能够发挥团队的优势,又能够避免团队人员数量过多所导致了一些问题。

在组建团队的时候,第三个需要考虑的问题是团队的同质性和异议性,在挑选团队成员的时候,您觉得团队成员的背景是比较相似的好呢?还是差异比较大的比较好?如果成员背景比较相似,我们就说成员之间同质性会比较高,比如说年龄相当,专业背景相同,性别相同等等。成员背景差异比较大,则异议性比较高还有一个需要注意的现象,就是我们在组建团队的时候,一定不能够把那种缺乏合作精神的成员放到团队当中,这类员工可能并不是因为个人偏好的问题。而是因为本人缺乏这种团队合作的精神,不愿意迁就他人。如果您把这种人放到团队当中,会妨碍团队和谐关系的形成。就像一个烂苹果,很可能把一箱的苹果都搞坏,那团队成员除了要具备他完成工作所需要的技术能力之外,还需要具备哪些方面的能力呢?

拥有以下五个方面特点的员工,更适合成为一名团队人员。第一,合作,乐意并且能够与他人一起工作,例如他愿意分享资源,能够适应团队其他成员的需要和偏好,第二,协调,这个人具有协调的能力,让这个团队有更好的表现,比如说他不仅了解自己的工作安排,他还会了解其他人的工作安排,能够把大家的工作进行很好的整合协调大家的工作第三,沟通,好的团队选手一定是一个以积极倾听同事的想法,并且能够使用合适的渠道和语言。以尊重的方式跟他人坦诚和高效地进行沟通的人,第四,慰藉,能够帮助同事和团队保持积极健康的状态。这个团队因为有这个人的存在。更充满正能量,它能够对同事表示理解,能够帮助同事建立信心,能够鼓舞这个团队,让这个团队更有士气。第五要善于解决冲突,团队当中一定会有冲突,一个好的团队选手,它具有解决团队分歧的技巧和主动性,它能够识别冲突,高效地进行解决。

2.5 如果团队成员之间存在分歧,你会怎么做?

  • 及时中断无休止的争执

如果一个问题讨论一个小时以上还没有结果,双方依然有争执,应该及时调停中止讨论。双方冲突和争执的问题各自整理清楚。关于冲突点的梳理,可以按照以下思维模式进行分析。要解决的问题是什么?采取什么样的解决方案为什么要采取这样的解决方案这个解决方案的好处和坏处分别是什么按照这个方案执行,需要什么条件,投入多少时间和人力完成这样做有什么好处呢?第一:一个小时以上还没讨论清楚的问题,可能再花一个小时也不一定讨论清楚,不需要再浪费太多时间。第二:及时中止讨论,可以避免团队成员之间因情绪化出现非理智行为。人在情绪激动时,比较容易出现言语过激等行为。及时暂定,双方调解下情绪,不至于让冲突和矛盾加深。第三:双方冷静下来,各自梳理清楚彼此的问题。可能会发现其他没有考虑过的情况,或者忽略掉的信息。每个人看问题的角度不一样,接收到的信息可能也不一样。

  • 引入外部专家协助分析问题

当团队成员之间互相不能说服对方时,此时引入外部专家判断,是最好的方式。针对以上梳理出来的情况,由双方都认可的相关技术专家,给出权威性判断,并解释详细原因。达成一个让双方都满意的结果。

  • 果断作出决策

经过各方评估和判断,已经有最佳解决方案,但依然有团队成员不满意或者不认可。项目经理要能果断作出决策,有权力命令选择最佳解决方案,不需要再浪费更多时间,一切为了团队目标而努力。不能因为部分人的原因而影响团队整理进度。

2.6 如何激励团队按时完成任务?

  • 随时把控进度

密切关注每个人及整个团队,及时跟进工作进展。定期举行团队及一对一会议,不要等到最后才去关注事情的进展。始终保持积极乐观的态度鼓励他们,不要再给他们施加更大的压力。选择合适的项目管理工具来跟进工作进度和评估工作效率,让成员之间的沟通更顺畅,反馈更迅速。

  • 承认员工的努力

对员工哪怕一点点的认可都会大大提高他们的生产力。当员工感到被认可或欣赏时,他们会更有动力去按时完成工作。他们会更努力的工作以达成他们的目标。与其一直念叨截止时间,不如以积极的方式去激励他们按时完成工作。认可他们的付出并表达你的谢意。如果他们遇到困难就要与他们一起去寻找解决方案而不是一味的批评。

  • 树立积极的榜样

员工会注意老板的言行举止。上司面对压力的态度会影响到他们处理问题的态度。如果你希望自己的员工能够把自己当做团队的合作者并保持积极向上的态度,那么你必须亲自践行这样的价值观。你的言行一致很重要。尽量做到每天都以积极乐观的形象展示给你的团队,你的团队成员也会效仿你的做法,长此以往,你的团队必将坚不可摧。

  • 避免工作倦怠

如果员工在身体上或情感上感到不堪重负的话,那么完成这项工作会需要更长的时间。首先,防止员工工作倦怠是你作为领导的职责。理想情况下,办公室应该有可以让员工放松和充电的地方。继续密切关注员工在工作场所的健康及幸福感。定期关注每个人的情况,询问对于自己的工作量方面有什么感受、有没有什么需要改变的。如果一个员工表现出压力或疲惫迹象,那就要想办法帮他缓解一下。或许你可以在他们工作时间上给予一定的灵活性,比如在家办公等。如果这能让他们保持在工作上的积极性的话那就是值得的。

2.7 如果事情没有按计划进行,你怎么处理?

当事情进展到一半时不符合预期,我们应该尽可能客观地评估当前的情况和可能的结果,再根据实际情况选择相应的心态和行动。如果当前的情况仍然有可能实现预期的目标,那么我们可以采取"先把事做成"的心态,继续努力完成任务,并寻找改进和优化的方法,以最大限度地实现目标。如果当前的情况已经无法实现预期的目标,那么我们可以采取"没必要做了"的心态,及时止损,减少损失,并尝试寻找更好的解决方案或机会。在实际工作中,我们应该具备客观分析和判断的能力,以及灵活的心态和应对能力,才能更好地应对各种情况,实现工作和个人的目标。

2.8 如果你成为公司的技术主管,要做的第一件事是什么?

  • 了解职责和下属
  • 制定目标和计划

3 项目管理

3.1 谈谈你的项目管理经验?

  • 立规矩

规范是我们日常工作的行为准则,规范的实施者既包括管理者,也包括员工。只是各个岗位所规范的内容不同罢了。你最近没有向职能部门提交问题,就没有人来问你这个或那个问题是如何解决的,等大家都反映这件事,就有人开始琢磨怎样规范这项工作,让大家都按这个规定来做。大家就在这个基础上逐步完善工作,把工作做得更好。任何事情都是一样的道理,只要你想做,就会去规范这件事,每个人也就有了行为的准则。

  • 高效会议

工作中的很多问题都是在会议中解决的。如何提高开会的效率,就成为大家关注的事情。如果我们在会议之前把要开会的内容告诉所有人,让大家有所准备,开会时就可以直接切入主题,让每个人谈自己的思路,这样可以有效利用时间。但在会议上,往往大家谈着谈着就跑题了,这时就需要会议的主持人能往主题方向引导大家的思路。此外,会议结束前,主持人或主管人员一定要重述这次会议的几项内容和解决措施,这样大家才会感觉到会议的重要性。

  • 统计数据

统计数据,简单地说是工作量化,是总结工作最直接、最明了的方法之一。统计对于各项工作都很重要,没有数据的分析,我们不知道努力的方向,至少说轻重缓急把握不好,有了数据就可以比较,知道目前面临最大的缺陷在哪里,针对缺欠加以改进。

对于基层的管理人员来说,数据的统计可以通过公司相关部门获得,得到的数据分析后一定要应用,只作分析不加以应用等于白搭,反而增加了工作量。

  • 定目标

一件事情的好与坏,如何去评价,首先要看所定目标是否合理性。合适的目标对每个人、企业都有好处,员工不会有太大的压力,就会安心努力地工作。企业每年都会有稳步的积累和发展。定目标对我们每个人说是再简单不过了,人的一生中不知道给自己定了多少目标,但真正努力去完成的目标有多少呢?目标要靠人来执行,执行过程中会有各种各样的评价,严格地说就是考核和监督。员工努力地工作,到每个月底公司收集数据进行评估和考核,到年底公司检查是否完成年初订立的目标。

3.2 说说你管理的最成功的一个项目?

3.3 如何管理工作的优先级?

常用方法的是四象限法,将任务分为:紧急、不紧急、重要、不重要。
(1)紧急且重要,立即做:这一类的事情具有时间的紧迫性和影响的重要性,无法回避也不能拖延,必须首先处理优先解决。
(2)紧急但不重要,少去做:这是些紧急但不重要的事情,这些事情很紧急但并不重要,因此这一象限的事件会很大程度地蒙蔽我们,造成了重要的假象,而实际情况这些事情即使重要,也是对别人重要。
(3)重要但不紧急,计划做:重要但不紧急的事情,如果你在这一象限事情上投入的时间少,关注度低,那么他很有可能会演变成第一象限,紧迫又重要的事情,在这个象限要进行长期规划。对于这类工作我们可以制定好计划,比如使用进度猫甘特图将工作分解为以日、周、月为单位的几个阶段,规定自己每天、每周、每月要做什么,要严格按照计划去做。
(4)不紧急也不重要,不要做:那些既不紧迫也不重要的事情,一些琐碎的工作杂事,如刷视频,闲聊天儿等,对于这些事情要学会拒绝。

3.4 你使用哪些资源来解决技术问题?

当遇到技术问题的时候,首先通过搜索网络资源来解决。实在找到不了,再寻求某个人的帮助。当你决定向特定的人提问之前,先做以下事情:
(1)认真阅读官方文档,例如:WiKi、FAQ、官方论坛等;
(2)阅读项目源代码,阅读接口文档。

在要询问问题之前,不要急着第一时间就去问人。首先理清自己的问题,也许在整理问题的时候,答案已经从自己脑海里出来了,对于不清晰的地方,可以自己画逻辑思维导图,尽可能让自己头脑变清晰。看代码也是如此,面对庞大的工程源码,我们可以一边看一边画一系列的脑图、结构图,让自己头脑清晰。这样你会发现处理事情或者看代码的时候会轻松很多,自己也容易理解相关问题。

如果问题仍然办法解决,也不要着急着问人,可以利用丰富的网络资源,而且自己必须学会搜索,你的大部分问题网络上已有丰富的答案;最后通过网络也不能找到自己需要的答案时,再去请教别人,但是请教也是有技巧的,你要总结好自己的问题,再用精确的语言把你的问题表达出来,别人在看到这个问题的时候,起码不会觉得这是白痴问题。提问时,要尽可能的引起回答者的兴趣,这样他们也会更乐意指导你,给你满意的答复,而不是轻描淡写的敷衍几句。

3.5 你用什么工具来检测代码的质量?

SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。

3.6 如何进行团队成员的代码审查?

(1)用工具进行基础问题的自动化检查:用 Tab 还是空格,用两个空格还是四个空格,函数后面怎么换行等基础问题检查,可以使用 SonarQube。团队成员应该把更多精力放在代码规范、代码性能优化等地方。
(2) 保证发布的代码和评审意见的可读性。大家都是程序员,你提交代码的时候,在符合团队风格的同时,把代码弄的好看点,如果你明确自己这个代码哪个地方不足,Highlight 出来让大家给意见。如果你是来 Review 代码的,把意见写的通顺点,评论有条理一些。
(3)对事不对人。大家是同事,在一个团队工作和气很重要。不要在 Code Review 中说“你写的什么垃圾东西这种话”,你可以说“这个变量名不好理解,咱们换成巴拉巴拉是不是更好”。
(4)在写新代码之前,先 Review 掉需要评审的代码。你让我去 Review 一周前的代码?我还得把思维和项目进度切换到一周前?大家肯定不愿意,所以要形成规定,写新代码之前先把旧的 Review 掉,提交 PR 的时候也保证代码量小,这样 Review 起来不需要大块时间,改起来也快。不能因为 Code Review 大幅耽误项目进度,进度是全团队的事,不是某个人的事。
(5)不要在 review 中讨论需求,review 就是 review。不要在 Code Review 里搞别的,有需要就另安排时间进行,要明确 Code Review 是完善代码,不是需求和功能讨论,始终要以代码质量为中心。
(6) 指定责任人:Reviewer 有责任保证CL的质量,作为Reivew的代码的Owner;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注