1  请用自己的算法, 按升序合并如下两个list, 并去除重复的元素:

list1 = [2, 3, 8, 4, 9, 5, 6]
list2 = [5, 6, 10, 17, 11, 2]

答案:

(1)自己的算法?

for x in list1:

for y in list2:

if x == y:

list2.remove(y)

list1 = list1+list2

lsit1 = list1.sort()

(2)

list1[0:0]=list2  或者 list1.extend(list2)

注意:列表方法sort()改变是列表本身序列,没有返回值,sorted函数是生成一个新的有返回值

list1.extend(list2)

print(sorted(set(list1)))
  1. 对比一下dict中 items 与 iteritems

  items会一次性取出所有的值,并以列表返回,iteritems返回的是生成器,通过迭代取出里面的值,一般在数据量大的时候,iteritems会比items效率高些

  1. Python中如何去除list中重复的数据

方法一:

使用set函数

方法二:

a = [1,2,3,4,5,56,6,7,8,8,9]

b = {}

b= b.fromkeys(a)

c= list(b)

  1. 请实现字符串翻转5种方案

Python实现

方法一:

def reverse (s):

rt = ''

for i in range(len(s)-1, -1, -1):

rt += s[i]

return rt

方法二:

def reverse2 (s):

li = list(s)

li.reverse()

rt = "".join(li)

return rt

方法三:

def reverse3 (s):

return s[::-1]

方法四:

def reverse4 (s):

return "".join(reversed(s))

方法五:

from functools import reduce

def reverse5 (s):

return reduce(lambda x,y:y+x,s)

注意:方法一和方法二以及方法三一般人都能写,四和五比较新颖

  1. 在没有第三个参数的情况下,交换2个变量的值

方案一:a,b = b,a

方案二:a = a + b

b = a - b

a = a - b

  1. 实现将2个元组合并成一个字典

a = ('a','b','c','d')

b = (1,2,3,4)

dict(map(lambda x,y:[x,y],a,b))

二:

dict(zip(a,b))

  1. 要求写出一个单例程序

class Dog(object):

__first_new = True

__instance = None

def __new__(cls):

if cls.__first_new:

cls.__instance = object.__new__(cls)

cls.__first_new = False

return cls.__instance

else:

return cls.__instance

a = Dog()

b = Dog()

  1. Python和c和Java的对比

python比较容易学习,语法简单python的库非常丰富,开发速度快,但是python脚本运行效率低,不适合做运行效率要求高的程序,java的语法比较严格,学习的曲线比较长,开发框架很强大,比较适合企业级的应用,和python\java相比,c是最古老的,c是为了代替汇编语言才出现的,一般用c做操作系统方面的开发,linux就是。

  1. 有用过with statement吗?它的好处是什么?
用过,有时我们处理一些文件操作的时候,可能会忘记进行close,而且在处理一些文件时很可能会发生一些异常,需要单独判断,with即上下文管理器,就很好的帮我们处理了这些,而且最棒的是他可以自动处理异常
  1. 是否遇到过python的模块间循环引用的问题,如何避免它?
这是代码结构设计的问题,模块依赖和类依赖
如果老是觉得碰到循环引用,很可能是模块的分界线划错地方了。可能是把应该在一起的东西硬拆开了,可能是某些职责放错地方了,可能是应该抽象的东西没抽象
使用 “__all__” 白名单开放接口
尽量避免 import
  1. 用最简单的方法将二维数组a = [[1,2,3],][4,5,6],][7,8,9],[11,12,13]]变成一维数组a = [1,2,3,4,5,6,7,8,9,11,12,13]

方法一

列表推导式

a1 = [y for x in a for y in x]

方法二

from compiler.ast import flatten

xx = flatten(a)

  1. 请阐述垃圾回收机制的原理

要是被问到就这么和面试官答保你必过:

python的垃圾回收机制和Java一样是自动回收没有用的资源的,采用的是引用计数为主,分带回收为辅的策略,

在python中当程序的引用计数为0的时候,Python就会对它进行回收处理释放资源,也就是引用计数为主,因为程序

的引用每次都会进行记录统计,所以引用计数会占用大量的资源,导致资源无法释放,当出现这种情况下,

python就会把所有循环引用的对象放在一个链表当中,这个链表称为0代,当引用计数器达到一定的阀值时,

Python会对0代的链条进行检查,标出没用的引用对象进行回收释放内存,将剩余的引用对象重新生成一个新的

链条即1代链条,当引用计数器达到一定的阀值,python处理1代的回收对象,将剩余的对象重新生成一个新的链条

即2代链条,当2代处理后如果有对象没有回收,该对象就放在2代链条上

python基础面试的更多相关文章

  1. Python基础面试,看这篇文章画重点吧,Python面试题No1

    为什么有这个系列的文章 一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字. 每一 ...

  2. python基础面试常见题

    1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...

  3. 8道Python基础面试练习题

    1.26个字母大小写成对打印,例如:Aa,Bb...... for i in range(26): print(chr(65+i)+chr(97+i)) 2.一个list包含10个数字,然后生成一个新 ...

  4. python基础面试集锦(51-100)

    目录 51.把aaabbbcccdd这种形式的字符串压缩成a3b3c3d2的形式? 52.给你一个字符串'abc',打印出该字符串的所有排列组合? 53.执行以下代码后,x的值为? 54.对于一个非空 ...

  5. 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)

    现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...

  6. python基础--概念性问题

    面试其他篇 目录: 头条面试题:https://blog.csdn.net/m0_37947204/article/details/80103151 1.1 python常见基础题 1.遍历文件夹 # ...

  7. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  8. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  9. Python学习之路(一)之Python基础1

    目录 Python基础初识 1.Python介绍 1.1.Python简介 1.2.Python特点 1.3.Python应用领域 1.4.Python解释器的种类 2.Python基础初识 2.1. ...

随机推荐

  1. Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...

  2. 个人总结——Beta阶段

    Beta总结 我们在beta 结束之后, 每位写一个博客, 回顾并总结自己的beta过程,哪些方面做的好的,哪些方面做得不足需要改进的 回答问题 分析在Alpha阶段自己提出的五个问题,针对每个问题, ...

  3. Scrum 冲刺 总结

    Scrum 冲刺 总结 冲刺阶段链接 Scrum冲刺第一天 Scrum冲刺第二天 Scrum冲刺第三天 Scrum冲刺第四天 Scrum冲刺第五天 Scrum冲刺第六天 Scrum冲刺第七天 冲刺阶段 ...

  4. 使用XIB实现嵌套自定义视图

    在进行iOS开发的过程中,对于一些复杂的界面,我们可以通过Interface Builder这个Xcode集成的可视化界面编辑工具在完成,这回节省大部分时间以及代码量.它的使用方法这里不做介绍了,这次 ...

  5. 完美解决ubuntu Desktop 16.04 中文版firefox在非root用户不能正常启动的问题

    ubuntu安装好后,默认安装有firefox浏览器,不过,非root的账户登录,双击firefox图标,居然出现如下提示:Your Firefox profile cannot be loaded. ...

  6. 微信号的openid的深入理解

    header('Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appid.'&r ...

  7. Centos6.7的在虚拟机virulBox下的lamp平台的搭建

    实验环境: linux:小甲鱼带你学C语言,带你飞的提供的体积比较小的centos6.7和virtualBox mysql,apahce,php是燕十八在Linux基础进阶中提供的安装方式: 结果,安 ...

  8. Python内置函数(8)——bool

    英文文档: class bool([x]) Return a Boolean value, i.e. one of True or False. x is converted using the st ...

  9. 云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品

    FusionSphere云平台:继承了虚拟化和云管理系统,为企业构建私有云  FusionManager:云管理平台(管理计算虚拟化.网络虚拟化.存储虚拟化) FusionCompute.Fusion ...

  10. 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

    工欲善其事,必先利其器.在开始正式的教程之前我们先来聊聊准备工作. 管理工具会VSTS. 代码管理会用GITHUB. 服务器会用Azure. 所有的东西都是利用现有服务.不会说自己从虚拟机开始玩.我们 ...