面试题总结

本文最后更新于2017年3月23日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

工作中,有时候会被临时叫去面试。有了那么几次经历之后,就想着提前准备一个面试题库,方便到时候有问题问,不至于又得临时找题目,效率不高,找到的题目的质量也不会太高。

面试应该要遵循一个科学的方法和思路,大体说来就是:

  • 第一层面:判断面试者的简历是否存在造假的情况;
    拿到面试者的简历之后,先大体浏览一遍,看他写了那些内容,自己心里面先有一个评估——教育经历、工作经历、技能列表的内容是否真实?项目经历是否属实?
  • 第二层面:判断面试者的简历是否存在夸大的情况;
    他对编程语言的了解处在一个什么水平?是精通、熟悉、能用还是略晓。他在他提到的项目中具体起到一个什么角色?是总负责人还是就一打杂的边缘人物。
  • 第三层面:判断面试者的实际水平层次在哪;
    这就需要面试官根据面试者对自己准备的各个层次的题目的回答情况做出动态判断;除了前期准备的一些比较死的题目之外,还可以针对面试者自认为的优势部分进行提问,难度不断升级,直到可以判断出他的实际水平为止。

第一个层面可以通过面试者的简历进行提问;第二、第三层面就需要面试官自己先准备一套题目,根据面试者的实际回答情况进行判断了,下面就大概准备一份常规的面试题以供参考。

正文:

参考解答:

C/C++相关:
  • C语言中#include<> 和 #include”” 有什么区别?
  • C语言中变量的跨文件引用
  • C语言中的 字符串数组 和 字符串指针
  • C语言中的字符串操作
  • C语言中sizeof与strlen的区别与联系
  • 用C语言实现循环读取文件内容并进行打印

=

Python相关:
  • Python中有哪些对象类型?其中哪些是不可变对象?
  • 这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
  • 下面这些是什么意思:@classmethod, @staticmethod, @property?

=

PHP相关:
Java相关:
操作系统
数据库
网络
编程题
其它

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3071.html

《面试题总结》上有21条评论

  1. 程序员面试金典
    https://github.com/careercup/ctci
    https://www.nowcoder.com/ta/cracking-the-coding-interview

    数据结构
      数组与字符串
      链表
      栈与队列
      树与图

    概念与算法
      位操作
      智力题
      数学与概率
      面向对象设计
      递归和动态规划
      扩展性与存储限制
      排序与查找
      测试

    知识类问题
      C和C++
      Java
      数据库
      线程与锁

    附加面试题
      中等难题
      高难度题

  2. 试题集 – 算法与编程
    http://www.cnblogs.com/JCSU/

    C、C++语法题(1)
    C、C++语法题(2)
    C、C++语法题(3)

    算法题(1) - 字符串
    算法题(2) - 线性表、树、图
    算法题(3) - 数组、集合
    算法题(4) - 其他

  3. 如何面试工程师?
    http://www.infoq.com/cn/articles/how-to-interview-engineers

    面试中减少噪音的具体方法
    1. 明确你要寻找的技能
    2. 提问时尽可能贴近实际工作
    3. 提问时将问题拆分成多个部分,使之无法泄漏
    4. 避免提太难的问题
    5. 对每一个候选人提同样的问题
    6. 考虑进行多个版本的面试
    7. 不要因证书或资质产生偏见
    8. 避免让面试陷入阴霾
    9. 做决定时基于技能的长板而非平均水平或短板

  4. 从一道简单的面试题考查应聘者的技术能力
    https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653548918&idx=1&sn=46f112739f13e4c3af168193b2914d7c

    面试观察中发现,很多开发同学平时只注重各种框架、新技术的学习,对于基本功不够重视,然而对于框架的学习,很多时候也只停留在会用的水平,对于框架的实现原理以及框架能解决哪些问题不是非常清楚。日常的开发实践中,很多时候也只是照着现成的代码拷贝粘贴,然后再修改,最终是可以用的。但如果要从头开始,搭建一个完整的项目框架,或者写一些稍微复杂的代码,就完全暴露出真实水平了。
    对于面试中小题目的选择上,可以稍微灵活点,结合一些实际中遇到的问题,让应聘者来尝试解决,简单的可以写出代码实现,复杂的给出解决问题的思路和过程也是好的;不赞成直接用明确的算法题,比如快排、二叉树遍历,这类题目目标非常明确,只要应聘者熟悉这个算法,或者准备过这个算法,很容易就可以写出来,无法考查出分析问题和解决问题的能力。

    举例:
    输入:一个带转义字符'\b'的字符串
    要求:删除转义字符'\b'和它前面的字符,如果遇到多个连续的'\b',则删除相同数量的转义字符和前面的字符
    输出:最终的结果字符串
    举例:输入"abc\b\bd\b\bghi",期望输出"ghi"

    程序员如何提问面试官?针对工程师、技术经理及CTO的提问指南
    https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653548609&idx=1&sn=4c76d4e83ef5def978a496dcb124dcee

  5. 面试的时候,如何描述自身优势???
    https://www.v2ex.com/t/397844

    Situation -> Task -> Action -> Result

    在团队中扮演什么样的角色、解决了什么样的问题、遇到项目压力如何调整进度和自身的抗压能力

    对底层实现原理感兴趣,看过 v8 的部分源码,看过 zend 源码……按照这个思路应该可以吧

  6. 通过率 1% 和 80% 的简历,都有什么区别?
    https://mp.weixin.qq.com/s/fNnAU787E2oOjKxrgC_IEg

    简历唯一的目标:获得面试机会。
    每申请一份工作,就要做一份不同的简历。
    最容易通过筛选的简历,核心是:“关键词匹配”。技能点,闪光点,证书。

    修改关键词,使其与招聘广告一致。你不应编造,而是从已有经历中挖掘相关的经验,或者为了这一份工作,学习新的技能。

    你不需要设计背景,才能做出一份好看的简历,但是你必须避免一些关键的、而人人都在犯的错误,才能让你的简历有可读性,从众多简历中脱颖而出。

  7. 如何搞定技术面试编码环节
    http://ethancai.github.io/2017/07/12/cracking-the-coding-skill/
    https://www.slideshare.net/gayle2/cracking-the-coding-interview-college
    https://github.com/careercup/CtCI-6th-Edition-Python

    解决问题的步骤:
    1、听:仔细聆听问题描述,完整获取信息
    2、举例:注意特殊用例、边界场景
    3、快速解决:尽快找到解决方案,不一定要最优。想想最优方案是什么样子的,你的最终解决方案可能处于当前方案、最优方案之间
    4、优化:优化第一版解决方案
      BUD优化方法
        瓶颈,Bottlenecks
        不必要的工作,Unnecessary work
        重复的工作,Duplicated work
      Four Algorithm Approaches
        Pattern Matching: What problems is this similar to?
        Simplify & Generalize: Tweak and solve simpler problem.
        Base Case & Build: Does it sound recursive-ish?
        Data Structure Brainstorm: Try various data structures.
      或者尝试下面的方法
        Look for any unused info
        Use a fresh example
        Solve it “incorrectly”
        Make time vs. space tradeoff
        Precompute or do upfront work
        Try a hash table or another data structure
    5、重新审视解决方案,确保在编码前理解每个细节
    6、实现
      Write beautiful code
        Modularize your code from the beginning
        Refactor to clean up anything that isn’t beautiful
    7、测试

  8. 如何有效地写算法题
    http://www.cnblogs.com/sskyy/p/8268976.html
    http://www.importnew.com/27784.html

    如何有效地写算法题

    目的:
    持续做算法题的目的仍然是自身能力提升。可以继续细化成三点:
      保持思维敏捷。非常重要,状态好才能保持对编程的热情。
      对基础的数据结构、查找和排序保持熟练。能解决日常开发中的性能相关问题。
      积累对问题域的探索。只有对问题域有足够的探索,才可能举一反三,迸发灵感。

    方法:
    为了更有效地实现上面的目标。推荐用下面的方式来做题:
      严格使用番茄时钟进行规划
      用一个番茄时钟对题目进行彻底的分析
      执行时的番茄时钟
      任一番茄时钟结束时

  9. 应届毕业生应该怎样写简历?
    https://hacpai.com/article/1522149387686

    我们为什么要写简历
    简历应该怎么写
    1. 结构清晰
      1.1. 请使用 pdf 格式传输简历
      1.2. 至少对你的简历做一点简单的设计
      1.3. 分类明确
    2. 目标明确
    3. 重点突出
      3.1. “多”和“少”的取舍
      3.2. 个人的真实技能与经历
        3.2.1. 技能
        3.2.2. 项目
    4. 亮点可寻
    总结

  10. 聊聊技术面试
    https://juejin.im/post/5ac5211f6fb9a028ca53329f

    前言
    何为技术面试
      1. 互怼型
      2. 尬聊型
      3. 一边倒
    何为能力边界 & 能力模型
    面试者如何勾勒自己的能力模型 & 面试官如何确定面试者的能力边界
      基础能力
      专业能力
      沟通能力
      潜力 & 成长性
      经验
    总结

  11. 谈谈面试官的责任
    https://mp.weixin.qq.com/s/lF6_0iIIVpfKgQdiAFdrGw

    第一,要理解求职者的目标和未来的方向,这不是空话,这是你必须明确的,你能否满足对方的期待,以及能否让对方相信你确实能满足他的期待。

    第二,试图证明,阐述他在这份工作中可以得到能力,素质,视野的提升。
    这一条主要针对应届生,有潜质的年轻求职者。

    第三,试图证明,企业的发展潜力可以满足他对职场地位,财富,社会资源的诉求,
    这一条主要针对那些有一定基础和实力,需要一个平台跨越发展的人才,比如一些一线企业的技术经理,希望能找到一个快速发展的企业作为技术带头人给自己职场带来一个跨越。

    第四,试图证明,他的能力和特长,在这个企业有足够的发展和发挥的空间。
    这一条是针对高阶人才,很多高阶人才选择一些新兴企业会有一个担心,我的技术背景,我的知识背景,会不会无用武之地,一些高阶人才,除了待遇需求,也希望工作是可以持续稳定的发展,他们担心说来了发现不合适,可能短期就会离开,这样其实谈待遇条件意义都不大,或者因为自己的技能与诉求不符合,或者平台不足以发挥自己的全面能力,会导致自己名声受损或未来发展受限。

  12. 如何成为一名合格的面试官?
    https://www.yejianye.com/2018/04/23/interviewer/

    如果要我用一句话概括怎样成为一个合格的面试官,那就是建立标准化的面试模板。这使你可以用同一把尺子去衡量所有的候选人(对于相同职位)。理想情况下,我希望一个公司能有一套标准的面试文档,细化到什么岗位问什么问题,每个问题如何打分。这样就大大减少了面试过程的不确定性,甚至由谁当面试官也都不重要了。我承认这太理想化,在我十多年的工作经历中,也没有遇见过真正做到这一点的公司。不过从自身做起,先建立一套自用的面试模板,还是不难的。

    记住,最好的 10% 与 最差的 10% 候选人往往不难识别,好的面试题要为区分中间 80% 的人提供数据。
    但不要只重视专业经验,而忽略基本素质。
    一个人的基本素质里包含了许多能力与品质,一般可以主要关注的三项:聪明,自我驱动,承担责任。
    挑选一个候选人熟悉的专业概念,假设我没有相关领域的背景知识,让他花 5 到 10 分钟把这个概念讲解给我听。

发表评论

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