热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

孙玄达叔:年薪75万的真实技术面试实践攻略(篇章二)

文章目录1、解决问题能力2、沟通与协作能力3、成长潜力4、文化匹配度5、彩蛋孙玄:毕业于浙江大学,现任转转公司首席架构师,技术委员会主席&


文章目录

  • 1、解决问题能力
  • 2、沟通与协作能力
  • 3、成长潜力
  • 4、文化匹配度
  • 5、彩蛋


孙玄:毕业于浙江大学,现任转转公司首席架构师,技术委员会主席,大中后台技术负责人(交易平台、基础服务、智能客服、基础架构、智能运维、数据库、安全、IT 等方向);前58集团技术委员会主席,高级系统架构师;前百度资深研发工程师;


【架构之美】微信公众号作者;擅长系统架构设计,大数据,运维、机器学习等技术领域;代表公司多次在业界顶级技术大会 CIO 峰会、Artificial、Intelligence、Conference、A2M、QCon、ArchSummit、SACC、SDCC、CCTC、DTCC、Top100、Strata+、Hadoop World、WOT、GITC、GIAC、TID等发表演讲,并为《程序员》杂志撰稿 2 篇。



1、解决问题能力

在篇章一中,我们聊了专业能力,今天我们来说说解决问题能力。我认为整体分为:设计能力、编码能力、问题排查能力,这三方面。

如果说专业能力主要是考察你的知识储备的话,那么解决问题能力,则是考察你灵活运用专业知识的能力。

假设面试官问到,如何设计一个 XX 功能 / 服务 / 系统,这时候,篇章一文章介绍的 BeafQPS 方法论就派上用场了。不仅要实现功能和业务,还要准确的识别出功能 / 服务 / 系统的难点,可能是需要高性能,或者需要高可用,或者需要高扩展,也可能是三者都要兼顾等等。过程中就体现了你的设计能力,既要有敏锐的洞察力,也要有结构化的全方位思考,以及可实操的落地方案。

以上,便是可以体现你设计能力的几个关键点。

下面,我们来说说编码能力,有不少工作经验较长的朋友,出去面试前,都不刷题,认为企业不会让自己写代码,这个侥幸心理不能有呀。现在越来越多的企业看重候选人的编码能力,有的团队,架构师甚至 TeamLeader,工作中也时常需要写代码。这里推荐大家面试前要至少把经典题目刷一下,比如二分查找、快速排序、反转链表、层序遍历二叉树、给定两数之和求下标、最近公共子节点、爬楼梯的算法等。

另外,比较务实的公司会考些工程类的题目,比如懒加载的单例模式、实现生产和消费的 demo、多线程交替打印有序数组、负载均衡算法等。还有的公司会考 SQL,需要把 join、group by having count、sum、avg 等用法复习一下,现在 leetcode 上也有 SQL 的题,可以刷两道找找感觉。也有的公司会考 Linux,需要把 awk、sed、sort、uniq 等关键命令熟悉下,典型题目是统计文本中出现次数最多的 ip。

最后,来说下问题排查能力,回答相关问题时,要先定位再修复。

先从监控和异常日志入手

如果是业务问题,那么可能是代码 bug 或者网络抖动造成的业务流程中断,也可能是某种原因造成的数据不一致,现象就是业务不正确或者业务不完整。

如果是系统问题,比如负载过高、内存不足、磁盘 io 过高、接口耗时变长、吞吐量降低等问题,需要借助 top、jstack、free、jmap、gcutil 等命令,以及 apm 监控和链路追踪系统,完成定位。定位之后,要给出短期和中长期的解决方案,比如负载过高,短期可以通过扩容机器来缓解,中长期可以去调整线程池参数,减少线程上下文切换次数、优化慢查询,防止请求堆积,消耗 cpu 和内存等。

再比如,发现是数据不一致导致的问题,短期的话,可以完善监控,并通过修复接口手动修数据;中长期的话,如果是主从延迟问题,可以核心链路强制读主库;如果是分布式事务问题,可以采取最大努力通知、事务消息、TCC、Seata 等解决方案。

解决问题能力,只靠积累专业知识是不够的,需要多实践,多总结。我平时在给来自各个公司技术核心人员授课时,都会很认真提到这一点,保持终身学习的态度,总是要持续保持优秀才好。

以上给大家介绍了五大考察点其中的专业能力和解决问题能力,接下来文章我们聊下剩余的三个考察点。


2、沟通与协作能力

如果说专业能力和解决问题能力是硬实力的话,那么接下来我们要讨论的就是软实力

首先,说下沟通与协作能力。

无论作为 leader 还是团队成员,我们都需要与很多同事一起工作,如果沟通与协作能力有问题的话,可能会降低团队的整体工作效率、影响团队的士气和氛围。因此,面试官也会观察候选人这方面的能力。

如何在平时提高沟通与协作能力,并在面试过程中,更好的体现出来呢?

很多内向的朋友可能会觉得这是一种天赋,与性格有关,自己不是那块料没法提高呀,我想说,因为大多数人的努力程度是非常低的,所以还远远没有到拼天赋的地步。建议这些朋友,抓住团建、聚会、吃饭、散步、打电话的时间,多与身边人交流聊天,久而久之,沟通能力一定会提高。这里也有个短期的特训技巧,去 app 商城搜一下“语音聊天”,试着下载两三个,每天与上面的陌生人聊 30 ~ 60 分钟,坚持一周,沟通能力就会有明显效果。

下面再说下协作能力,首先要有同理心,人无完人,我们不能用对家人和朋友的期望,来要求每一个同事、每一个面试官。比如面试官迟到了、或者说错话了、作为候选人,可以理解包容、恶劣情况下也要审时度势,权衡利弊,当然,必要时我们也要坚守自己的底线和原则。

另外,要补充的一点就是,很多较为高级的职位,工作职责都会包含日常指导初中级工程师、跨团队沟通、统筹协调、项目管理、团队管理等,因此越是工作经验丰富的朋友,越要注意提高自己的沟通协作能力。

面试过程中,不卑不亢、语速正常、注意抑扬顿挫,不要想机关枪一样,一个声调突突突,那样面试官会听的很累,抓不住重点。保持微笑,与面试官真诚的交流互动。沟通协作能力这块就会有个不错的分数。


3、成长潜力

好的,我们聊下一个考察点,成长潜力

企业招一个人的成本是很高的,尤其是高端岗位,企业一定不希望候选人入职待一年就走的,这样不利于团队的稳定性和梯队建设,也不利于企业的发展,因为新人入职的第一年,基本都在熟悉业务、系统、流程、团队等,真正做出重大贡献,往往要第二年才能开始。

因此,企业对候选人的成长性是有期望的,面试官会看,候选人过往的经历有没有在较短时间内,完成新业务或系统的熟悉,快速做出业绩的事例;也会看候选人,对自己做过的事情,有没有较为深刻的理解,是否善于发现问题,并提出解决方案以及执行落地。

典型的场景是,我们在描述完自己很拿手的项目之后,面试官问,这个项目有没有可以优化的地方?如果候选人能够脱口而出,把当前的问题,短期、中期、长期的规划,清楚的说出,就可以体现出很好的主动性,这也意味着成长潜力。

最近面试了一个同学,简历里写的项目,用到了限流的高可用手段,上面还写了具体用的是令牌桶算法,于是我就问,还了解其他的限流算法吗?他表示不清楚,由此可以初步判断,这位同学的主动性和成长潜力可能是一般的,这个例子,给我们的启示就是,工作中使用的技术,不要仅仅停留在使用层面上,也要去了解原理,深入细节,了解选型的原因,这体现了主动性,也体现了成长潜力。现在,我课堂上都会针对技术做架构逻辑、底层原理做很深入的讲解,大家都很喜欢


4、文化匹配度

下面我们再聊下文化匹配这个考察点。

通常这方面都是由主管、VP、HR 来考察的,有的面试官很坦诚,“我们这里加班很多,早 10 晚 10,996,你能接受吗?”,也有的会通过询问离职原因了解候选人的三观,面对这种问题,offer 收割机可以如实作答,因为面试也是双向选择;对于手上没有 offer 的朋友,可以适度修饰作答。

每个企业都有自己的使命、愿景和价值观,候选人面试前可以提前做好功课,如果顺利面到后面,适当的表达自己对企业文化的认可,会有很大加分的。

最后要说的是,面试攻略系列文章其实是属于标题党,功夫在于日复一日一点一滴的积累和思考,希望通过这一系列文章,能让大家对技术人的能力模型、思考框架,有个较为系统的认知。


5、彩蛋

大家认知里比较热门的基础知识,主要有编程语言基础、多线程、IO、缓存、数据库、各种组件与工具等等。
操作系统可以说是上面这些“基础知识”的基础知识了

学好操作系统,可以帮助我们更好的理解,运行在它上面的一些程序、软件、组件、工具等等,从而可以让我们更快的学习其他的新技术,因为他们的底层都汇聚在操作系统这一层,是相通的。

先来看下操作系统在维基百科的定义:

操作系统(英语:Operating System,缩写:OS) 是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
如图 1,所示来方便大家的理解操作系统(以Linux 操作系统为例)。

在这里插入图片描述
可以很清楚的帮助大家理解操作系统与计算机软件(应用程序)和硬件的职责边界和层次结构。

在这里插入图片描述
图 2,则给大家展示了操作系统需要处理的一些基本事务:进程管理、内存管理、文件管理、网络操作、设备控制,以及操作系统内核的体系结构。现在请各位老铁闭上眼睛想下,什么是操作系统呢?操作系统能做哪些事情呢?

恭喜各位已经可以准确回答上这个问题了,同时也已经打开了操作系统学习之路的大门。

人生路漫漫,帮助我们走向人生巅峰的,一定是我们真实的能力。所以一起苦练基本功吧,记得关注和分享哦,后续会给大家提供更专业、更精彩的文章,包含专业知识与原理、架构设计、职场感悟、人生趣谈等内容。

期待与大家一起成长!


关注【架构之美】,与孙玄老师探讨更多深层次架构知识

在这里插入图片描述


推荐阅读
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
冰妞qb_424
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有