【面试】互联网软件研发岗位,面试内容准备方向(技术面试考察点)

【面试】互联网软件研发岗位,面试内容准备方向(技术面试考察点)

1、简历筛选与面试评价

HR部门捞简历的流程

  • 简历的细选

    • 职位、职责、学历、工作年限、地点等等。关键词可以帮助招聘官迅速判断应聘者是否符合JD要求
    • 应聘者的主要数据。应聘者的名字、目前的职位和公司、目前职位的起始时间、以前的职位和公司、以前的职位的起始日期、应聘者教育背景。
    • 应聘者最近工作经历中与JD相匹配的内容。这里有三个核心词:最近、大致、匹配。这就是说,细选时只看重最近经历中与JD中相吻合的经验;只求“大致”匹配,不要求严格吻合
  • 细选简历的关键要点有:

    • 只看“有没有”,不看“配不配”。
    • 在细选简历阶段,不必纠结在关键要素是否匹配上,而只是关注是否有我们需要的核心元素。在简历中所描述的职责和经验中,有没有我们在JD中所设定的“关键词”。不要“鸡蛋里挑骨头”。
  • 简历的精读

    • 应聘者既往经历的主要职责和工作内容;应聘者既往取得的成就和成功经验;应聘者既往的管理幅度和管理经验;简历中存在的疑问和瑕疵。

    • 辨别和确认应聘者解决问题能力和经验、领导风格和经验、文化适应性、书面沟通能力、团队精神和团队建设、效率改善能力和经验等等。

    • 一个在外企工作多年的应聘者转到民营企业,可能存在“水土不服”问题。再者,在日韩台企工作多年的候选人工作风格多偏于严格、服从、执行;在民企出来的应聘者抗压能力和实操能力明显强于其它,但可能缺乏高度和深度;而外企工作多年的候选人专业度、职业精神更出色。

    • 既往的角色和职责:不仅仅要看应聘者做了哪些事,还要特别关注他在其中担任的角色是什么,承担的责任有哪些。“主持”项目和“参与”项目的责任不同,获得经验也不同。 对角色和职责的判断有两个关键词:“相关性”和“最近”。相关性是指应聘者在既往的工作经历中与所应聘职位的角色、职责的吻合度

    • 一个既有国企、外企又有民企工作经历的应聘者,对文化的适应性肯定高于只有单一性质的企业工作经历的应聘者。在国企工作多年的应聘者可能对处理复杂人际关系得心应手;而外企应聘者自我意识会更强烈;有民营企业工作经历的应聘者抗压、抗击打能力则明显高于在其他企业的应聘者。

    • 工作期间和职业发展
      应聘者每一段工作经历少于三年,通常意味着应聘者的稳定性较弱。
      两段工作经历之间存在 “工作间隔” 需要引起重视。
      另外,应聘者的职业发展线路是上行、下行或波浪式,对判断应聘者的能力和整体素质有积极意义。
      当然,如果高职位是在小公司,而后来的较低的职位是在大公司,是符合职业发展逻辑的。

用人部门捞简历的流程

  • 目标:尽可能低的成本找到更大概率能通过全部面试且和当前团队匹配的人选。
  • 来源:
    • 公司内部招聘网站,会对接司外主流的招聘站点,周期性同步新的简历到系统里。
    • 招聘系统简历先到先得,谁先找到并发起面试流程谁就能先拥有这份简历的面试资格。
    • 公司内其它部门同事沟通,任何时候都可以联系。
  • 如何过滤简历(面试评价)
    • 有3个或以上团队面试过且都不通过的一般不考虑,因为多个团队都不要,一般多少有点问题
    • 其它团队面试记录里反馈有比较恶劣情节的不考虑。最近一个月连续两个以上团队沟通都表示没意向的不考虑。
    • 重点关注只有一个团队面试过,且初试通过,复试不过的候选人, 这个时候已有评语很重要
    • 其次看有多个团队且多次通过面试记录的人选。
    • 历史面试只有1次,放弃理由里没有硬伤,可以考虑再发起。
  • 通用流程:
    找到觉得值得面的后马上发起面试,锁定简历。
    选择非正常工作时间联系,比如中午,晚上8点后。
    说明自己是谁(面试官),问候选人是否方便通话,说明是从简历库里找到简历,看是否有看新机会的意向,再介绍我们做什么,问候选人是否有意向,有的话约一个时间,系统里点击安排。
  • 外包流程:
    外包供应商开始筛选简历并录入系统进行推送(可以要求供应商提前面试和笔试)
    岗位职责:负责XXX项目的开发。
    岗位需求:熟悉python编码语言和django框架,思维活跃,逻辑性强,主动性好。
    备注:供应商推送简历时注意,为了加快招聘过程,提升成功率:
    1.必须要先做笔试,笔试题目可以找XXX,笔试可以在线方式也可以现场,但要保证独立完成。
    2.必须要在供应商侧先做一轮面试,保证基本沟通能力没问题,基本的python语言熟悉度和具备实际项目经验
    3.简历推送时需要附上笔试结果和面试评价,如果没有,则部门不会筛选简历和安排面试。

2、面试内容(通用 & 沟通表达)

灵魂三连问

  • 你觉得人怎么样? 【表达能力、沟通能力、学习能力、总结能力、自省改进能力、抗压能力、情绪管理能力、影响力、团队管理能力】
  • 如果让他独立完成项目的设计和实现,你觉得他能胜任吗? 【系统设计能力、项目管理能力】
  • 他的分析和解决问题的能力,你的评价是啥?【原理理解能力、实战应用能力】

考察目标

  • 候选人的技术基础:
    技术基础是基石(冰山之下的东西),占七分, 解决问题的思路和能力是落地(冰山之上露出的部分),占三分。 业务和技术基础考察,三七开。
  • 分析和解决问题的能力:
    技术层面:深度 + 应用能力 + 广度。 对于校招或社招 P6 级别以下,要多注重 深度 + 应用能力,广度是加分项; 在 P6 之上,可增加 广度。
  • 校招:
    基础扎实,思维敏捷。 主要考察内容:基础数据结构与算法、进程与并发、内存管理、系统调用与IO机制、网络协议、数据库范式与设计、设计模式、设计原则、编程习惯;
  • 社招:
    经验丰富,里外兼修。 主要考察内容:有一定深度的基础技术机制,比如 Java 内存模型及内存泄露、 JVM 机制、类加载机制、数据库索引及查询优化、缓存、消息中间件、项目、架构设计、工程规范等。

面试内容:

  • 自我介绍: 覆盖籍贯, 爱好, 个人经历, 掌握的技能;
    可以借此判断性格, 沟通表达能力, 是否有认真准备
  • 项目陈述: 背景, 问题,解决方案,难点,亮点
  • 工程能力: redis, mq, 缓存,性能优化, 设计能力,业界各问题类型的最新的一些组件,web安全漏洞攻防;开源项目的跟进了解和参与;一些组件源码的熟悉等,实际github上的项目分享
  • 专业基础: 操作系统,数据结构,网络基础,算法基础,编码语言基础;计算机相关专业书籍的阅读
  • 技能考察: 前端和后台特有的技能知识点考察
  • 笔试: 在系统里约了后,如果选择方式面试,在操作界面里有推荐的笔试题入口

问题设计与面试过程

  • 提前阅读候选人简历,从简历中筛选出关键词,根据这些关键词进行有针对性地问题设计。
  • 比如候选人简历里提到 MVVM ,可以问 MVVM 与 MVC 的区别; 提到了观察者模式,可以谈谈观察者模式,顺便问问他还熟悉哪些设计模式。
  • 可遵循“优势-标准-随机”原则:
    • 首先,问他对哪方面技术感兴趣、投入较多(优势部分),根据其优势部分,阐述原理及实战应用;
    • 其次,问若干标准化的问题,看看他的原理理解、实战应用如何;
    • 最后,随机选一个问题,看看他的原理理解、实战应用如何;
  • 对于项目同样可以如此:
    • 首先,问他最有成就感的项目,技术栈、模块及关联、技术选型、设计关键问题、解决方案、实现细节、改进空间;
    • 其次,问他有挫折感的项目,问题在哪里、做过什么努力、如何改进;
  • 学会倾听:多问少说,让候选者多表现。根据候选者的回答适当地引导或递进或横向移动。引导候选人表现他最优势的一面,让他或她感觉好一些:毕竟一场面试双方都付出了时间和精力,不应该是面试官 Diss 候选人的场合。
  • 记录重点:认真客观地记录候选人的回答,尽可能避免任何主观评价,亦不作任何加工(比如自己给总结一下,总结能力也是候选人的一个特质)。
  • 作出判断:面试过程是一种铺垫,关键的是作出判断。
    • 作出判断最容易陷入误区的是:贪深求全。总希望候选人技术又深入又全面。实际上,这是一种奢望。如果候选人的技术能力又深入又全面,很可能也会面临两种情况:1. 候选人有更好的选择; 2. 候选人在其它方面可能存在不足,比如团队协作方面。
    • 一个比较合适的尺度是:1. 他或她的技术水平能否胜任当前工作; 2. 他或她的技术水平与同组团队成员水平如何; 3. 他或她的技术水平是否与年限相对匹配,是否有潜力胜任更复杂的任务。
  • 不同年龄看重的东西不一样
    • 对于三年以下的工程师,应当更看重其技术基础,因为这代表着他的未来潜能;同时也考察下他在实际开发中的体现,比如团队协作、业务经验、抗压能力、主动学习的热情和能力等。
    • 对于三年以上的工程师,应当更看重其业务经验、解决问题能力,看看他或她是如何分析具体问题,在业务范畴内考察其技术基础的深度和广度。

高效考察

  • 考察内存管理及算法、数据库索引、缓存、并发、系统设计、问题分析和思考能力等子主题。
  • 如果候选人答不上,可以问:如果你来设计这样一个 XXX, 你会怎么做?
  • 时间占比大概为 : 技术基础(25-30分钟) + 项目(20-25分钟) + 候选人提问(5-10 分钟)

3、面试内容(八股 & 基础知识)

考察思路

  • 为什么不能单考察业务维度?
    因为业务方面通常比较熟悉,可能就直接按照现有方案说出来了,很难考察到候选人的深入理解、横向拓展和归纳总结能力。
    这一点,建议有针对性地考察下候选人的归纳总结能力:比如, 微服务搭建或开发或维护/保证系统稳定性或性能方面的过程中,你收获了哪些可以分享的经验?
  • 为什么要考察业务维度?
    技术基础考察,容易错过的地方是,候选人的非技术能力特质,比如沟通组织能力、带项目能力、抗压能力、解决实际问题的能力、团队影响力、其它性格特质等。

考察方法:

  • 是什么-为什么
    是什么考察对概念的基本理解,为什么考察对概念的实现原理
    比如 索引是什么? 索引是如何实现的?

  • 引导-横向发问-深入发问
    引导性,比如 “你对 java 同步工具熟悉吗?” 作个试探,得到肯定答复后,可以进一步问: “你熟悉哪些同步工具类?” 了解候选者的广度;
    获取候选者的回答后,可以进一步问:“ 谈谈 ConcurrentHashMap 或 AQS 的实现原理?”
    一个人在多大程度上把技术原理能讲得清晰,包括思路和细节,说明他对技术的掌握能力有多强。

  • 深度有梯度和层次的发问
    设置三个深度层次的发问。每个深度层次可以对应到某个技术深度。
    第一个发问是基本概念层次,考察候选人对概念的理解能力和深度;
    第二个发问是原理机制层次,考察候选人对概念的内涵和外延的理解深度;
    第三个发问是应用层次,考察候选人的应用能力和思维敏捷程度。

  • 跳跃式/交叉式发问
    比如,讲到哈希高效查找,可以谈谈哈希一致性算法 。 两者既有关联又有很多不同点。也是一种技术广度的考察方法。

  • 总结性发问
    比如,你在做 XXX 中,获得了哪些可以分享的经验? 考察候选人的归纳总结能力。

  • 实战与理论结合
    比如,候选人叙述 JVM 内存模型布局之后,可以接着问:有哪些原因可能会导致 OOM , 有哪些预防措施? 你是否遇到过内存泄露的问题? 如何排查和解决这类问题?
    比如,候选人有谈到 SQL 优化和索引优化,那就正好谈谈索引的实现原理,如何建立最佳索引?
    比如,候选人有谈到事务,那就正好谈谈事务实现原理,隔离级别,快照实现等;

  • 熟悉与不熟悉结合
    针对候选人简历上写的熟悉的部分,和没有写出的都问下。比如候选人简历上写着:熟悉 JVM 内存模型, 那我就考察下内存管理相关(熟悉部分),再考察下 Java 并发工具类(不确定是否熟悉部分)。

  • 死知识与活知识结合
    比如,查找算法有哪些?顺序查找、二分查找、哈希查找。这些大家通常能说出来,也是“死知识”。
    这些查找算法各适用于什么场景?在你工作中,有哪些场景用到了哪些查找算法?为什么? 这些是“活知识”。

  • 学习或工作中遇到的
    有时,在学习和工作中遇到的问题,也可以作为面试题。
    比如,最近在学习《操作系统导论》并发部分,有一章节是如何使数据结构成为线程安全的。这里就有一些可以提问的地方:如何实现一个锁?如何实现一个线程安全的计数器?如何实现一个线程安全的链表?如何实现一个线程安全的 Map ?如何提升并发的性能?
    工作中遇到的问题,也可以抽象提炼出来,作为技术基础面试题。

考察中的注意点:

  • 技术栈适配度发问
    如果候选人(简历上所写的)使用的某些技术与本公司的技术栈比较契合,则可以针对这些技术点进行深入提问,考察候选人在这些技术点的掌握程度。如果掌握程度比较好,则技术适配度相对更高一些。
    当然,这一点并不能作为筛掉那些没有使用该技术栈的候选人的依据。比如本公司使用 Mongodb 和 MySQL, 而一个候选人没有用过 Mongodb, 但使用过 MySQL, Redis, ES, HBase 等多种存储系统,那么适配度并不比仅使用过 MySQL 和 Mongodb 的候选人逊色,因为他所涉及的技术广度更大,可以推断出他有足够能力掌握 Mongodb。

  • 应对背题式面试
    首先,背题式面试,说明候选人至少是有做准备的。当然,对于招聘的一方来说,更希望找到有能力而不是仅记忆了知识的候选人。
    应对背题式面试,可以通过 “引导-横向发问-深入发问” 的方式,先对候选人关于某个知识点的深度和广度做一个了解,然后出一道实际应用题来考察他是否能灵活使用知识。
    比如 Java 线程同步机制,可以出一道题:线程 A 执行了一段代码,然后创建了一个异步任务在线程 B 中执行,线程 A 需要等待线程 B 执行完成后才能继续执行,请问怎么实现?
    ”理论 + 应用题“的模式。敌知我之变,而不知我变之形。变之形,不计其数。

  • 实用不生僻
    考察工作中频繁用到的知识、技能和能力,不考察冷僻的知识。
    比如我偏向考察数据结构与算法、并发、设计 这三类。因为这三类非常基础非常核心

  • 综合串联式发问
    知识之间总是相互联系着的,不要单独考察一个知识点。
    设计一个初始问题,比如说查找算法,然后从这个初始问题出发,串联起各个知识点。比如:在每一个技术点上,都可以应用以上发问技巧,导向不同的问题分支。同时考察面试者的深度、广度和应用能力。

4、面试内容(项目 & 解决问题)

一般面试的开头,都是让候选人自我介绍,还是介绍最近所做的项目。

考察方向:

  • 这个环节可以考察两点:
    1、沟通表达能力,候选人能否清晰、准确、简练的介绍自己和项目。
    2、业务理解能力,候选人能否用简短的几句话,介绍项目的实现架构、业务模型、以及所使用的技术栈。
  • 遇到过不少候选人,简历上写的一堆项目,大部分都是参与开发,深入问一些细节问题,就开始支支吾吾,把锅甩到队友身上:这块功能是xxx开发的,具体细节我没去了解过。

考察目标:

  • 项目经历考察不宜超过两个。因为要深入考察一个项目的详情,所占用的时间还是比较大的。
  • 一般来说,会让候选人挑选一个他或她觉得最有收获的/最有挑战的/印象最深刻的/自己觉得特有意思/感受到挫折的项目。然后围绕这个项目进行发问。
  • 通常是从项目背景出发,考察项目的技术栈、项目模块及交互的整体理解、项目中遇到的有挑战性的技术问题及解决方案、排查和解决问题、代码可维护性问题、工程质量保障、重来一遍可以改进哪些等。

实习与项目经历描述(简历)

  • 参与XXX技术方案制定与评审,完成后端接口设计与编写,通过联调测试并上线供各部门使用;
    编写XXX脚本与XXX查询接口,完成XXX前XXX资源查询;
    使用Gin+Gorm+PostgreSQL与N8N工作流构建后端服务,使用XXX关联工单id解XXX问题。
  • 使用XXX+XXX作为基本框架,分层编写RESTful APl(controller、service、dao)
    使用Dokcer技术打包并完成API部署,编写Shell脚本保障容器正常运行。

解决问题能力考察

  • 仅仅只是技术基础还不够,通常最好结合实际业务,针对他项目里的业务,抽象出技术问题进行考察。

  • 解决思路重在层层递进。这一点对于面试官的要求也比较高,兼具良好的倾听能力、技术深度和业务经验。首先要仔细倾听候选人的阐述,找到适当的技术切入点,然后进行发问。如果进不去,那就容易考察失败。

  • 常见问题:
    性能方面,qps, tps 多少?采用了什么优化措施,达成了什么效果
    如果有大数据量,如何处理?如何保证稳定性
    你觉得这个功能/模块/系统的关键点在哪里?有什么解决方案?
    为什么使用 XXX 而不是 YYY ?
    长字段如何做索引?
    还有哪些方案或思路?各自的利弊?
    第三方对接,如何应对外部接口的不稳定性?
    第三方对接,对接大量外部系统,代码可维护性?
    资损场景?严重故障场景?
    线上出现了 CPU 飙高,如何处理? OOM 如何处理? IO 读写尖刺,如何排查?
    线上运行过程中,出现过哪些问题?如何解决的?
    多个子系统之间的数据一致性问题?
    如果需要新增一个 XXX 需求,如何扩展?
    重来一遍,你觉得可以在哪些方面改进?

  • 系统可问的关联问题:
    绝大多数系统都有性能相关问题。如果没有性能问题,则说明是小系统,小系统就不值得考察了;
    中大型系统通常有技术选型问题;
    绝大多数系统都有改进空间;
    大多数业务系统都涉及可扩展性问题和可维护性问题;
    大多数重要业务系统都经历过比较惨重的线上教训;
    大数据量系统必定有稳定性问题;
    消费系统必定有时延和堆积问题;
    第三方系统对接必定涉及可靠性问题;
    分布式系统必定涉及可用性问题;
    多个子系统协同必定涉及数据一致性问题;
    交易系统有资损和故障场景;

设计问题

  • 比如多个机器间共享大量业务对象,这些业务对象之间有些联合字段是重复的,如何去重? 如果字段比较长,怎么处理?
  • 如果瞬时有大量请求涌入,如何保证服务器的稳定性?
  • 组件级别:设计一个本地缓存? 设计一个分布式缓存?
  • 模块级别:设计一个任务调度模块?需要考虑什么因素?
  • 系统级别:设计一个内部系统,从各个部门获取销售数据然后统计出报表。复杂性体现在哪里?关键质量属性是哪些?模块划分,模块之间的关联关系?技术选型?

5、面试内容(前后端)

见具体业务知识,面经等博客。
【八股】2023秋招八股复习笔记1(CSBase)
【八股】2023秋招八股复习笔记2(C++基础 & 操作系统)
【八股】2023秋招八股复习笔记3(智力题 & 非技术题50道)
【八股】2023秋招八股复习笔记4(MySQL & Redis等)
【八股】2023秋招八股复习笔记5(计算机网络-CN)

参考资料:1+2345678

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哈里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值