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. <经验杂谈>C#对CA证书加密解密的简单介绍

    最近做项目接触了一些关于用CA证书加密解密的知识,现在分享一下,加密主要分为对称加密和非对称加密以及单项加密这三种,CA是一个权威的第三方认证机构,CA加密有公钥和私钥之分. 以下是C#读取证书文件进 ...

  2. 201621123050 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...

  3. 20145237 《Java程序设计》第2周学习总结

    教材学习内容总结 本周我学习了java的基础语法.分为类型.变量与运算符,流程控制. 一.类型:1.Java可以区分为基本类型和类类型.类类型也称作参考类型.2.Java中基本类型主要是整数.字节.浮 ...

  4. 【iOS】Swift LAZY 修饰符和 LAZY 方法

    延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些对象的属性和内容非常复杂的话,这个时间更是不可忽略.另外,有些情况下我们并不会立即用到 ...

  5. highcharts 具体参数详解

    <script type="text/javascript" src="js/jquery.min.js"></script> < ...

  6. Angular.js 1++快速上手

    AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Goole所收购.是一款优秀的前端JS框架.AngularJS有着诸多特性,最为核心的是:MVC,撗块化,自动化双向数据绑 ...

  7. OO面向对象课程作业1-3总结

    作业一.多项式的加减运算 1.设计要点与自我分析 我设计的类图 老师建议类图 我设计了两个类来进行多项式的计算,类Polynomial进行多项式的存储和输入输出,第二个类进行多项式加减运算.而加减运算 ...

  8. 17-TypeScript代理模式

    在有些情况下,我们需要把客户端真正调用的类和方法隐藏起来,而通过暴露代理类给客户端.客户端调用代理类的方式就可以访问到真实类提供的功能. abstract class Called{ protecte ...

  9. 第三章 JavaScript操作BOM对象

    第三章   JavaScript操作BOM对象 一.window对象 浏览器对象模型(BOM)是javascript的组成之一,它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HT ...

  10. IntelliJ IDEA sass环境配置及常见报错处理

    1.下载安装ruby,网上教程很多的,安装完之后在命令行输入ruby -v检查一下是否安装成功了.(注意安装的时候要勾选第二项).