随着Python时代的到来(AI会用到Python,区块链会用到Python,大数据会用到Python,自动化会用到Python.......Python好像无所不能了),我们现在的Python职位越来越多,Python工程师也越来越多了,大家都争先恐后的去搞Python,搞什么人工智能了,就包括一些其他行业小白也想进军人工智能市场了,AI这么火真的是谁都可以做吗?小编当初毕业的时候做的是Java,后来换到做了Python,当时就觉得做Python一是简单,二是需求量大,还有就是项目结束的时候用它编写自动化脚本来的更方便些。
对于那些培训班说,学了Python就能懂AI的就纯属瞎扯淡,花哥两万块去某内做个培训Python你就是AI工程师了?你就会深度学习了?你就会在AI界有立足之地了?
哦哦,那你学的不是AI,应该是API。
不是所有人都有天赋有能力来做这个行业的,大学高数线代离散都没及格的就想从Java进军人工智能市场,那你就省省吧,毕竟如果连最基本的线代离散都不会,这样的AI我看不是AI,是BI(悲哀)!
真的,如果你不像小编线代离散绩点都逼近4.0的,那你就好好做Java吧,机器学习什么的真的不是你该玩的,尤其是培训班,就更不要去了。当然如果你是做开发转测试,那这个还好,这个一般培训培训(或者自己学学)就能掌握了,应该没什么太大的难度。
总而言之就是不要看到什么火就去做什么,盲目跟风只会毁了自己,尤其是花高价钱去某内培训,然后出来发现自己和原来并没有什么两样,只不过会调api了,会看Python代码了,然后就没有然后了。。。。
出于自己对自己负责的心态,如果真的想学AI,你可以去coursera上看看吴恩达的教程(开始是免费的,应该够你学了),如果能看得懂,做的会,那恭喜你,你可以考虑进军AI市场了,当然,这只是开始,后面调参,量化,剪枝,防拟合会有你受的,总而言之,这并不是一条简单的道路,任何光鲜的背后都是枯燥无味的。
还有一点要说的是,Python只是一门语言,任何情况下语言都只是一门工具,你做的事情才是最后的结果,所以别听那些培训班胡说八道,学了Python就是学了AI,真正的AI是要从理论学起的,或者说AI的课程就是理论与计算,与Python无关,Python只是提供了相关的库,方便你调用而已,给你两行代码告诉你这是分类聚合,即使你看的懂API,可你真的懂吗?我想大家应该是心知肚明的,没有好的数学功底就好好当码农吧,其实挖代码也挺不错的,久而久之你挖的代码也能帮你找回你作为程序猿的自信呢!
废话说了那么多,下面来看看Python面试可能会遇到的知识点吧(纯Python知识点)
lambda函数是什么?
lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数
lambda函数:首要用途是指点短小的回调函数
lambda [arguments]:expression
Python中pass是干嘛的?
pass语句不会执行任何操作,一般作为占位符或者创建占位程序。
while False:
pass
(看到它就像没看到就行)
如何在一个函数里面设置一个全局的变量?
解决方法:在函数的开始插入一个global声明:
def foo()
global x
匹配HTML标签的时候,<.*>和<.*?>有什么区别?
没有问号是贪婪模式,有问号是懒惰模式,如果是没有问号,它可以连续匹配多个相同的目标标签,如果是加了?变成懒惰模式,它就会匹配到一个就停止匹配。
a=[1, 2, 3, 4, 5],列表a中的偶数位置的元素进行加3后求和?
sums = sum(map(lambda x: x + 3, a[1::2]))
列表的sort方法和 sorted的区别是什么?
sort 是list的方法,改变list对象的顺序,返回值为None sorted是Python的内置方法,适用iterable对象,返回值是新列表,不影响原来的iterable的顺序
有一篇英文文章保存在 a.txt 中,请用python实现统计这篇文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数(只考虑空格,标点符号可忽略)
Python函数中经常有 *args,**kwargs 这两个参数,它们是什么意思,为什么要使用它们?
都是不定长参数,
*args返回的是tuple,
*kwargs返回的是dictionary。
Python中的变量作用域(变量查找顺序)
记住LEGB
local 局部变量--->enclosed 闭包作用域 ----> Global 全局---->built-in变量
如图,输出结果
1,1,1 1,2,1 3,2,3
1 1 1 继承自父类的类属性x,所以都一样,指向同一块内存地址
1 2 1 更改Child1,Child1的x指向了新的内存地址
3 2 3 更改Parent,Parent的x指向了新的内存地址
Python是怎样管理内存的?
Python的内存管理是由私有heap空间管理的。所有的Python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才能对它进行操作。为Python的heap空间分配内存是由Python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员使用。Python有自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用。
数组和元组之间的区别是什么?
数组和元组之间的区别:数组内容是可以被修改的,而元组内容是只读的。另外,元组可以被哈希,比如作为字典的关键字。
参数按值传递和引用传递是怎样实现的?
Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定的,因此无法被改变。但是如果一个对象是可以被修改的,你可以改动对象。
Python中的unittest是什么?
在Python中,unittest是Python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等的功能。
Python中的模块和包是什么?
在Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象和属性。一个包含许多Python代码的文件夹是一个包。一个包可以包含模块和子文件夹。