很多人认为 Python 语言简单 (实际真的那么简单吗? 语法简洁不代表容易学), 都去自学 Python 编程语言, 然后寻思出去找一份好的工作, 其中学生居多. 所以这套面试题我随机例举了几个罢了, 文末有提示.
一般面试官见到初入社会的学生, 他不会问你多少年的开发经验, 最多他只会提你是自学还是系统学, 熟悉哪些框架? 所提的面试题也会相对简单, 然而薪资方面也会大幅度降低, 这是人之常情.
大型企业的面试题总会出一些新花样, 来表示它们的与众不同之处. 似是而非, 感觉很容易, 实际上你确实答不出来! 这就是他们想要的效果, 他们会说这么基础的 Python 知识点你都答不出来等等... 从而降低你的月薪.
下面的面试问题主要涉及的都是 Python 语言本身, 不是哪些模块与框架的掌握, 每个面试题实际上都是一个教程, 一些面试题甚至会涉及到多个编程领域. 这是你以后面试的一道护身符.
1,Python 编程是什么? 他会鼓励你与其它语言做对比.
答案:
Python 为面对对象解释型语言. 与 C 语言等其它封装的语言不同之处在于跑 Python 代码之前无需编译.
Python 是动态类型语言, 在声明变量时, 无需说明变量的类型. 举例 X = 111 程序也不会报错, 但是在其它语言里就不一定了.
Python 代码简洁, 所以编写速度很快, 然而运行速度却比编译语言慢. 但是 Python 可以与 C 语言嵌入式编程, 所以我们可以解决这个问题. 例: numpy 模块运行速度非常快, 但其算术运算却并不是由 Python 实现的.
Python 用途非常广泛, 爬虫, web, 运维, 大数据, 人工智能等等, 可以帮助其他语言和组件改善运行状况, 所以称之为 "胶水语言".
Python 有丰富的第三方库, 程序员可以专注于算法与数据结构设计, 而不用去处理底层的细节.
面试官为何问此问题, 我觉得无需解释.
2, 补充下面代码中所缺失的代码部分
答案
让你写代码, 当然一方面可以检测你对代码的严谨程度. 命名规范是否统一等.
递归函数不仅需要递归而且需要终止, 否则将会无休无止的调用栈, 看你是否明白其中的原理.
使用 os 模块和操作系统进行交互, 交互方式可以跨平台. 代码 sChildPath = sPath + '/' + sChild, 在 Windows 系统上是会报错的.
当你不知道代码所需要实现的功能时, 你可以大胆的问, 不然你无法答题.
递归在 Python 中很重要, 同时考验你操作系统进行交互的知识点是否掌握.
3,A0,A1 至 An 的最终值是什么
问题的意义:
列表解析对效率的提升显著, 但是也是很多人的学习障碍.
部分 Python 代码故意写的很怪的, 就是让你知道以后你的同事可能就是如此.
4,Python 的多线程是什么? 例举 Python 代码用并行方式运行的办法.
Python 的多线程与其它语言有着本质的差别. Python 确实有多线程包, 但 Python 中有一个 GIL 的存在, 它会让你的多个线程中, 始终只有一个被执行, 所以对提升代码效率没有任何意义.
但是当我们想同时执行一些任务, 不考虑效率问题时, 那么使用 threading 包是很方便的.
这个问题很关键: 许多学过其它编程语言的开发人员, 始终不信多线程鸡肋, 不碰南墙不回头, 实际上也是看你是什么水平了.
5, 看代码, 写出输出结果
答案
输出的结果用注解表示:
为何问这个问题:
面对对象的理解是 Python 编程的核心, 考验你是否理解了继承与 Python 中 super 函数的使用方法.
6, 你是否有过失败经历?
错误答案
从未, 举世无敌
人性考验:
公司需要敢承认错误, 为自己的错误负责, 并且能够从错误中学习的人. 如果你真的没有过失败, 那回答这个问题的时候你可能需要编故事了.
7, 是否独立用 Python 开发过项目, 就算没问, 你一定要自己补充.
真的?
做过个人项目, 说明你的技能水平方面比一般人较高, 而且愿意付出更多的努力, 甚至你确实是热爱 Python. 同时你有维护你的 Python 个人项目, 这可是属于工作之外的事情, 言外之意就是你工作之外也坚持编程, 到此, 就懂了.
此 Python 面试题我拿来的都是最简单的, 是真正的学生面试题, 为什么我不拿难度高的呢? 因为很多工程师面试题一般网友也无法做出来! 如果你能够都答出来, 那么你真的可以去面试了, 但是我还是建议再修炼一段时间 Python, 因为这样的题表示你的薪资不会太高.
来源: http://developer.51cto.com/art/201806/576532.htm