11道面试中不常见却一定会问到Python题解析

发表于:2019-3-27 10:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:36大数据

#
Python
 
   Python面试题解析
  编者按:
  恰逢金三银四招聘季,很多朋友都在忙着跳槽找工作,不断的面试……我们知道网上有非常多面试题的解析,但是其中往往是前几年的老题了。 为了帮助小伙伴们能够在Python工作面试中脱颖而出,再此特别奉上2019年11道最新Python面试大题及答题思路解析。
  1、请用python编写函数find_string,从文本中搜索并打印内容,要求支持通配符星号和问号。
  例子:
 >>>find_string('hello\nworld\n','wor')
  ['wor']
  >>>find_string('hello\nworld\n','l*d')
  ['ld']
  >>>find_string('hello\nworld\n','o.')
  ['or']
  解析:
   def find_string(str_in,pat):
  import re
  return re.findall(pat,str_in,re.I)
  2、看你T恤上印着:人生苦短,我用Python,你可否说说Python到底是什么样的语言?你可以比较其他技术或者语言来回答你的问题。
  解析:
  这里是一些关键点:Python是解释型语言。这意味着不像C和其他语言,Python运行前不需要编译。其他解释型语言包括PHP和Ruby
  1.Python是动态类型的,这意味着你不需要在声明变量时指定类型。你可以先定义x=111,然后 x=”I’m a string”。
  2.Python是面向对象语言,所有允许定义类并且可以继承和组合。Python没有访问访问标识如在C++中的public, private, 这就非常信任程序员的素质,相信每个程序员都是“成人”了~
  3.在Python中,函数是一等公民。这就意味着它们可以被赋值,从其他函数返回值,并且传递函数对象。类不是一等公民。
  4.写Python代码很快,但是跑起来会比编译型语言慢。幸运的是,Python允许使用C扩展写程序,所以瓶颈可以得到处理。Numpy库就是一个很好例子,因为很多代码不是Python直接写的,所以运行很快。
  5.Python使用场景很多 – web应用开发、大数据应用、数据科学、人工智能等等。它也经常被看做“胶水”语言,使得不同语言间可以衔接上。
  6.Python能够简化工作 ,使得程序员能够关心如何重写代码而不是详细看一遍底层实现。
  本题解析来源:@David 9,链接:http://nooverfit.com/wp/15
  3、请写出一段Python代码实现删除一个list里面的重复元素。
  解析:
  1.使用set函数,set(list)
  2.使用字典函数,
   >>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
  >>> b={}
  >>>b=b.fromkeys(a)
  >>>c=list(b.keys())
  >>> c
  本题解析来源:@Tom_junsong
  4、a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3],编程用 sort 进行排序,然后从最后一个元素开始判断?
  解析:
   a.sort()
  last=a[-1]
  for i inrange(len(a)-2,-1,-1):
  if last==a[i]:
  del a[i]
  else:last=a[i]
  print(a)
  本题解析来源:@Tom_junsong
  5、Python里面如何生成随机数?
  解析:
  random模块
  随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
  random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
  随机实数:random.random( ):返回0到1之间的浮点数
  random.uniform(a,b):返回指定范围内的浮点数。
  本题解析来源:@Tom_junsong
  6、Python里面如何实现tuple和list的转换?
  解析:
  直接使用tuple和list函数就行了,type()可以判断对象的类型
  7、什么是lambda函数?它有什么好处?
  解析:
  lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数
  lambda函数:首要用途是指点短小的回调函数
   lambda [arguments]:expression
  >>> a=lambdax,y:x+y
  >>> a(3,11)
  8、- 输入一个字符串 返回满足以下条件的字符串
  - 由字符串的最前面两个字母和最后两个字母组成的字符串。
  - 例如: 'spring' 返回 'spng', 'is' 返回 'is’
  - 当输入的字符串长度小于2时,返回空字符串
  解析:
   s=input('input:')
  l=len(s)
  if l<2:
  print('')
  else :
  if l>3:
  s=s[:2]+s[-2:]
  print(s)
  9、把每个合数分解成几个质数相乘的形式,例如:100=2*2*5*5,并把代码封装成函数的形式
  解析:
   def f(n):
  result = []
  i = 2
  str1 = str(n) + '='
  while n > 1:
  if n % i == 0:
  n /= i
  result.append(str(i))
  i -= 1
  i += 1
  str1 += '*'.join(result)
  return str1
  if __name__ == '__main__':
  for i in range(100, 120):
  print(f(i))
  对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
  (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
  (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
  10、请用Python手写实现冒泡排序
  解析:
  冒泡排序的原理不难,假定要将被排序的数组R[1..n]从大到小垂直排列,每个数字R可以看作是重量为R.key的气泡。
  根据轻气泡在上、重气泡在上的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,则使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上、重者在下为止。
  然后将所有气泡逆序,就实现了数组从小到大的排序。
  步骤:
  1 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2 对第0个到第n-1个数据做同样的工作。这时,最大的数就到了数组最后的位置上。
  3 针对所有的元素重复以上的步骤,除了最后一个。
  4 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
  Python实现
   def bubble_sort(arry):
  #获得数组的长度
  n = len(arry)
  for i in range(n):
  for j in range(1,n-i):
  #如果前者比后者大
  if  arry[j-1] > arry[j] :
  #则交换两者
  arry[j-1],arry[j] = arry[j],arry[j-1]
  return arry
  11、- 判断是否为回文
  - 提示:回文:62426是回文数字
  解析:
   s=input('pls input a string of numbes:')
  s_=s[::-1]
  answer='isn\'t'
  if s_==s:
  answer='is'
  print(s,answer,'Palindrome number')
  如果您还想看更多关于Python的面试题,我们推荐你点击“阅读原文”到七月在线AI面试题题库,题库里目前拥有上千道AI面试题解析,涵盖所有考点,包括机器学习、深度学习、Python、NLP、数据挖掘、算法等个方面。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号