⑴ 面试题:你为什么选择python
为什么Python比MATLAB、R语言好呢?
其实,这三种语言都很多数据分析师在用,但更推荐python,主要是有以下几点:
1、python易学、易读、易维护,处理速度也比R语言要快,无需把数据库切割;
2、python势头猛,众多大公司需要,市场前景广阔;而MATLAB语言比较局限,专注于工程和科学计算方面,而且MATLAB价格贵,免费版或盗版都只能玩玩学习用;
3、python具有丰富的扩展库,这个是其他两个不能比的;
python版本选择
初学者版本选择是很多人都会问的,我们也不会偏向某个版本,主要根据自己的所需,但建议是选择最新版本Python3.x,这样很多新功能和旧功能都会有的,但是目前很多第三方库仍然不支持Python3,因为Python2.x已经停止继续开发,不意味着不能使用。
⑵ python习题(算法)
这个就是循环2n次呀。先是让x=x+c,在把c更新一下c=c+b,最后让b=b+a,这就完成一次循环了。
不过你给的程序不完整。
⑶ Python后端工程师面试题目有哪些
1. 我从来不问google可获得的答案的问题, 只是问问面试者“在过去的工作中,遇到的Ta认为最有成就感的一件事情是什么”和“如果出现了一个google不到的问题,你会怎么解决”这样的问题。
2. 我从来不问操作系统等和Python无关的话题,首先是我不怎么问和工作太无关的话题,有些东西用不到很多就被会遗忘,挑起来这种问题其实挺无聊;其次我是非计算机专业毕业,问的东西说不定我自己都没有把握,那就不出来献丑了。我只关注面试者的学习能力和解决问题的方式,说白了,是不是就是看他是不是“聪明的人”。
3. 不问面试者的短处。我在自己被面试的时候有过这种精力,面试者问他擅长的内容,我不一定搞的定,如果反过来面试Ta,我也会灭掉Ta。所以我会尽力寻找面试者的优势和优点,尤其是对方已经明确承认。其实很多经验和能力,只是需要一个机会和环境,所以我不想放过任何一个合适的人。
4. 面试者不会Python也没有关系。面试者的主动性和学习能力觉得更重要,如果他在其他领域能证明做的不错或者能让我感觉到这个一个未来有潜质成为优秀工程师的人,不会Python没有关系。 嗯目前看来,我没有看错过。
5. 我从来不问Python语法这种看书和google就能学会的问题,我只想了解Ta是否愿意去学。举个例子,我会让面试者“讲讲日常开发中都用到了那些Python内置的模块”,原因在我的专栏“Python之美 - 知乎专栏”的 Python不能不知的模块 - Python之美 - 知乎专栏中有写,基本上说完我就能评估出他的能力和风格,继而就是再问一些问题去验证我的评估是不是准确。
6. 最后,我一般都会和面试者细聊一个Ta认为在过去的工作或者自己开源的项目中最熟悉的一个,从项目设计、踩过的坑儿、开发周期以及如何安排、如何确定需求、如何和其他人协作等方面,最后评估下Ta是否能很容易的融入到我们现在的团队,大家是否可以接受Ta,对工作不负责的、没有用心工作的、没有团队意识的、沟通能力有缺陷的就放弃掉,对性格上容易发生冲突的、不适合团队合作的我就得考虑下,未来也会如实反馈给HR。
⑷ python题:
1. 欧几里德算法
欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:
定理: gcd(a, b) = gcd(b, a mod b)
证明:
a可以表示成a = kb + r, 则r = a mod b
假设d是a, b的一个公约数, 则有 d|a, d|b, 而r = a - kb, 因此d|r。
因此,d是(b, a mod b)的公约数。
加上d是(b,a mod b)的公约数,则d|b, d|r, 但是a = kb + r,因此d也是(a, b)的公约数。
因此,(a, b) 和(a, a mod b)的公约数是一样的,其最大公约数也必然相等,得证。
欧几里德的Python语言描述为:
1
2
3
4
5
6
7
8
9
10
def gcd(a, b):
if a < b:
a, b = b, a
while b != 0:
temp = a % b
a = b
b = temp
return a
2. Stein算法
欧几里德算法是计算两个数最大公约数的传统算法,无论是理论,还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在很大的素数时才会显现出来。
考虑现在的硬件平台,一般整数最多也就是64位, 对于这样的整数,计算两个数值就的模很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。
Stein算法由J.Stein 1961年提出,这个方法也是计算两个数的最大公约数。和欧几里德算法不同的是,Stein算法只有整数的移位和加减法,这对于程序设计者是一个福音。
为了说明Stein算法的正确性,首先必须注意到以下结论:
gcd(a, a) = a, 也就是一个数和他自己的公约数是其自身。
gcd(ka, kb) = k * gcd(a, b),也就是最大公约数运算和倍乘运算可以交换,特殊的,当k=2时,说明两个偶数的最大公约数比如能被2整除。
Stein算法的python实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
def gcd_Stein(a, b):
if a < b:
a, b = b, a
if (0 == b):
return a
if a % 2 == 0 and b % 2 == 0:
return 2 * gcd_Stein(a/2, b/2)
if a % 2 == 0:
return gcd_Stein(a / 2, b)
if b % 2 == 0:
return gcd_Stein(a, b / 2)
return gcd_Stein((a + b) / 2, (a - b) / 2)
3. 一般求解实现
核心代码很简单:
1
2
3
def gcd(a, b):
if b == 0:return a
return gcd(b, a % b)
附上一个用Python实现求最大公约数同时判断是否是素数的一般方法:
程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
def showMaxFactor(num):
count = num / 2
while count > 1:
if num % count == 0:
print 'largest factor of %d is %d' % (num, count)
break #break跳出时会跳出下面的else语句
count -= 1
else:
print num, "is prime"
for eachNum in range(10,21):
showMaxFactor(eachNum)
输出如下:
1
2
3
4
5
6
7
8
9
10
11
largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10
⑸ python面试必备题目有哪些
Q:你做一个自我介绍吧?
旁白:其实遇到好几家面试官都让我做自我介绍了,该如何自我介绍阳哥估计都会背了,好玩(恶心)的是在万达信息面试,面试了3个技术官,每个人都分别让我做了自我介绍,尼玛,他们3个就不会沟通一下要问我啥吗,一个问题至于问我3遍吗~:funk:阳哥是敢怒不敢言,毕竟在人家的地盘。
PS:自我介绍的内容就不说了,每个人都是独特的,我就跟大家说一下应该如何自我介绍吧。
一个优良的自我介绍会给面试官留下深刻的印象,大部分情况下,所谓的面试好坏其实看的就是你给面试官留下的印象怎么样了,我们用俗语叫感觉。
自我介绍应该分以下几个部分,按照一定的逻辑连贯起来。如果连贯不起来,或者不够熟练一定在台下多背几遍,多讲几遍,但是面试的时候不要说的跟背过似的,高境界就是让面试官感觉你是临场发挥的,却又比背的都好。
1)个人基本信息(姓名、年龄、老家、居住地等)
2)自己来自哪里(工作地点),是干什么的(给自己一个清晰的定位,比如:我是一名Android开发工程师),担任过什么职务、做过什么样的项目
3)自己为何来贵公司面试
4)最后祝愿(希望能得到贵公司的认可等等,不用太多,一两句话就ok)
Q:介绍一下你做过的项目吧?
PS:黑马那么多项目,随便准备3个就ok了。
介绍项目大概的思路如下:
1)这个项目是干什么的(比如是一个类似网易新闻的地方新闻客户端,或者类似美团的o2o,或者类似豌豆荚的一个应用市场,或者类似淘宝的购物平台)?解释就是拿一个市场上耳熟能详的应用跟自己的应用做类比,省的面试官听的云里雾里的。
2)自己负责了哪些模块(功能)的职责(比如负责系统的架构,核心代码的编写,xx功能模块的开发等等)
3)自己在这个项目中担当的责任(比如,这个项目是自己独立开发的,这个项目是和另外一个同事一起架构一起开发的,这个项目是自己负责了几个核心模块)
4)项目中都用到了哪些技术
5)从项目中学到了哪些东西(可以从技术方向和业务两个方向入手)
旁白:面试官问的很多技术性问题跟之前问的都大同小异,因此这里只给出有特色且技术含量高的。阳哥正在写面试宝典,该宝典核心内容针对的还是技术问题,阳哥会从javase基础到javase高级,从Android基础到Android高级以及到Android项目依次展开分析,其次也会写一些常见的非技术性问题,敬请期待~
Q:①在Listview的优化中,我们为何使用ConvertView?②为何使用ViewHolder?③你认为哪个更能解决问题?④你认为view.inflate和view.findviewById哪个更耗时,为什么?⑤如果这两个AP让你重新写,你怎么写?
PS:上面的问题,阳哥认为是面试以来遇到很难的一个,也是很有技术含量的一道题。前一半问题还好回答,最后一个问题真的需要发挥想象了。
A:①使用ConvertView可以实现对view的复用,这样大大节约了每次创建对象的时间,提升了ListView的显示效率。②使用ViewHolder作为内部类,可以将view的子控件封装在ViewHolder类中,然后通过View.setTag(ViewHolder)将view和ViewHolder进行绑定,这样我们就不用每次都调用view的findViewById(id)方法来查找控件。③使用ConvertView解决了一大部分问题,使用ViewHolder实现了控件换时间的问题,因为给View对象设置一个Tag本身就是占用内存的,因此ViewHolder的使用还是需要区分不同的应用场景的, 没有绝对的好与不好。如果内存足够需要高效则ViewHolder建议使用,否则不建议使用。④当然是view.inflate耗时,这个函数完成的功能是把xml布局文件通过pullParser的形式给解析到内存中,需要io,需要递归子节点。⑤我其实还不太相信我写出来的代码比Google官方写的好,如果让我写的话我可能会这样考虑,当用户在使用view.inflate的时候将多个id作为数组添加到形参中,这样在初始化view的使用我就可以给这个view直接调用setTag方法绑定需要的子控件。不过这个原生方法其实也应该保留共不同的需求使用。
PS:技术面试时间并不长,我回答了几个之后,他们两个大眼瞪小眼,A看看B问:你还有什么问的吗?B说我没有,你还有吗?A说我也没了。那行,接下来,他们就让我等人事了。
⑹ python面试,一般都问什么问题
下面是一些关键点:
Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。
Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。
Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符(access specifier,类似C++中的public和private),这么设计的依据是“大家都是成年人了”。
在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。
Python代码编写快,但是运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。numpy就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。
Python用途非常广泛——网络应用,自动化,科学建模,大数据应用,等等。它也常被用作“胶水语言”,帮助其他语言和组件改善运行状况。
Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。
⑺ Python笔试题,求大神解答
以下是我给你的一些建议:(有多种方法可实现,包括最新的f'')
一:(可以使用join)
a=[(14.58,120.972),(14.58344,120.9723)]#初始化列表a
print(a)#输出a列表便于对比
b=[','.join('({:.6f},{:.6f})'.format(*b)forbina)]#格式化a列表
print(b)#输出格式化后的列表
或:(因刚刚手工没测试,上机后发现列表带有''号,上面代码可以尝试改成这样)
a=[(14.58,120.972),(14.58344,120.9723)]#初始化列表a
print(a)#输出a列表便于对比
b="[%s]"%','.join('({:.6f},{:.6f})'.format(*b)forbina)#格式化a列表
print(b)#输出格式化后的列表
二:(使用官方3.6新增的格式化功能)
a=[(14.58,120.972),(14.58344,120.9723)]#初始化列表a
print(a)#输出a列表便于对比
(x,y),(i,k)=a#解包
#对包进行格式化操作
x=f'{a[0][0]:.6f}'
y=f'{a[0][1]:.6f}'
i=f'{a[1][0]:.6f}'
k=f'{a[1][1]:.6f}'
#输出
print([(x,y),(i,k)])
或:(因刚刚手工没测试,上机后发现列表带有''号,上面代码可以尝试改成这样)
a=[(14.58,120.972),(14.58344,120.9723)]#初始化列表a
print(a)#输出列表a,方便对比
#格式化列表a
a=f'[({a[0][0]:.6f},{a[0][1]:.6f}),({a[1][0]:.6f},{a[1][1]:.6f})]'
#输出格式后的列表a
print(a)
注:
个人建议使用format或f''代替%进行格式化操作。官方推荐用f-格式化。
为什么呢?
举个例子:(以下代码在python在可运行正常)
name="run24pro"
print("mynameis%s"%name)
但如果改成这样:
name=(1,2,3)
print("mynameis%s"%name)
运行的时候将会返回一个类型错误。而以下代码将不会。
name=(1,2,3)
print("mynameis{}".format(name))
name=(1,2,3)
print(f'"mynameis{name}"')
还有一点,新增的功能f-格式化是所有中最快的。
附:官方3.6新增的格式化功能供你参考
网页链接
参考:
PEP 498 -- Literal String Inte Python 3.6中新的f-strings
纯手工,如果对你有帮助望采纳!
⑻ 在main方法中,验证链表方法时传入什么参数去验证这个方法是否正确
如果你在寻找python工作,那你的面试可能会涉及Python相关的问题。
通过对网络资料的收集整理,本文列出了100道python的面试题以及答案,你可以根据需求阅读测试。
⑼ python 经典面试题有哪些
所说所有的变量都是对象。 对象在python里,其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。对象通常就是指变量。从面向对象OO的概念来讲,对象是类的一个实例。在python里很简单,对象就是变量。class A:myname="class a"上面就是一个类。不是对象a=A()这里变量a就是一个对象。它有一个属性(类属性),myname,你可以显示出来print a.myname所以,你看到一个变量后面跟点一个小数点。那么小数点后面