python基础面试
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)))
对比一下dict中 items 与 iteritems
items会一次性取出所有的值,并以列表返回,iteritems返回的是生成器,通过迭代取出里面的值,一般在数据量大的时候,iteritems会比items效率高些
Python中如何去除list中重复的数据
方法一:
使用set函数
方法二:
a = [1,2,3,4,5,56,6,7,8,8,9]
b = {}
b= b.fromkeys(a)
c= list(b)
请实现字符串翻转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)
注意:方法一和方法二以及方法三一般人都能写,四和五比较新颖
在没有第三个参数的情况下,交换2个变量的值
方案一:a,b = b,a
方案二:a = a + b
b = a - b
a = a - b
实现将2个元组合并成一个字典
a = ('a','b','c','d')
b = (1,2,3,4)
dict(map(lambda x,y:[x,y],a,b))
二:
dict(zip(a,b))
要求写出一个单例程序
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()
Python和c和Java的对比
python比较容易学习,语法简单python的库非常丰富,开发速度快,但是python脚本运行效率低,不适合做运行效率要求高的程序,java的语法比较严格,学习的曲线比较长,开发框架很强大,比较适合企业级的应用,和python\java相比,c是最古老的,c是为了代替汇编语言才出现的,一般用c做操作系统方面的开发,linux就是。
有用过with statement吗?它的好处是什么?
是否遇到过python的模块间循环引用的问题,如何避免它?
这是代码结构设计的问题,模块依赖和类依赖
如果老是觉得碰到循环引用,很可能是模块的分界线划错地方了。可能是把应该在一起的东西硬拆开了,可能是某些职责放错地方了,可能是应该抽象的东西没抽象
使用 “__all__” 白名单开放接口
尽量避免 import
用最简单的方法将二维数组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)
请阐述垃圾回收机制的原理
要是被问到就这么和面试官答保你必过:
python的垃圾回收机制和Java一样是自动回收没有用的资源的,采用的是引用计数为主,分带回收为辅的策略,
在python中当程序的引用计数为0的时候,Python就会对它进行回收处理释放资源,也就是引用计数为主,因为程序
的引用每次都会进行记录统计,所以引用计数会占用大量的资源,导致资源无法释放,当出现这种情况下,
python就会把所有循环引用的对象放在一个链表当中,这个链表称为0代,当引用计数器达到一定的阀值时,
Python会对0代的链条进行检查,标出没用的引用对象进行回收释放内存,将剩余的引用对象重新生成一个新的
链条即1代链条,当引用计数器达到一定的阀值,python处理1代的回收对象,将剩余的对象重新生成一个新的链条
即2代链条,当2代处理后如果有对象没有回收,该对象就放在2代链条上
python基础面试的更多相关文章
- Python基础面试,看这篇文章画重点吧,Python面试题No1
为什么有这个系列的文章 一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字. 每一 ...
- python基础面试常见题
1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...
- 8道Python基础面试练习题
1.26个字母大小写成对打印,例如:Aa,Bb...... for i in range(26): print(chr(65+i)+chr(97+i)) 2.一个list包含10个数字,然后生成一个新 ...
- python基础面试集锦(51-100)
目录 51.把aaabbbcccdd这种形式的字符串压缩成a3b3c3d2的形式? 52.给你一个字符串'abc',打印出该字符串的所有排列组合? 53.执行以下代码后,x的值为? 54.对于一个非空 ...
- 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)
现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...
- python基础--概念性问题
面试其他篇 目录: 头条面试题:https://blog.csdn.net/m0_37947204/article/details/80103151 1.1 python常见基础题 1.遍历文件夹 # ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- Python学习之路(一)之Python基础1
目录 Python基础初识 1.Python介绍 1.1.Python简介 1.2.Python特点 1.3.Python应用领域 1.4.Python解释器的种类 2.Python基础初识 2.1. ...
随机推荐
- Ubuntu如何配置SSH免密登录
前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...
- 【Java实现】栈和队列就是这么简单
一.前言 上一篇已经讲过了链表[Java实现单向链表]了,它跟数组都是线性结构的基础,本文主要讲解线性结构的应用:栈和队列 如果写错的地方希望大家能够多多体谅并指正哦,如果有更好的理解的方式也希望能够 ...
- ThreadLocal 原理和使用场景分析
ThreadLocal 不知道大家有没有用过,但至少听说过,今天主要记录一下 ThreadLocal 的原理和使用场景. 使用场景 直接定位到 ThreadLocal 的源码,可以看到源码注释中有很清 ...
- lambda及参数绑定
一.介绍 对于STL中的算法,我们都可以传递任何类别的可调用对象.对于一个对象或一个表达式,如果可以对其使用调用运算符,则称它为可调用的.即,如果e是一个可调用的表达式,则我们可以编写代码e(ar ...
- JAVAGUI设计步骤
①创建容器 首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器.典型的包括窗口(Window).框架(Frame/JFrame).对话框(Dialog/ ...
- 在wamp集成环境下安装laravel5.2.*框架
虽然官方一直强烈推荐使用homestead,但是这个相对麻烦一点,所以我还是选择使用wamp集成开发环境.还有这里我只讲解windows系统下的安装,其他例如mac或linux就不写了,此文章是面向刚 ...
- Visual Studio Code初识与自动化构建工具安装
1.Visual Studio Code如何新建文件夹 要自己手动在本地新建,然后再点击文件->打开文件夹即可. 之后你就可以任意添加文件了 2.如何使用自动化构建工具 通过自动化构建工具,用户 ...
- DOM中的事件对象(event)
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件相关的信息. 包括导致事件的元素.事件的类型以及其他与特定事件相关的信息. 例如:鼠标操作导致的事件对象中,会包含鼠 ...
- 从PRISM开始学WPF(九)交互(完结)
0x07交互 Notification xaml: <Window x:Class="UsingPopupWindowAction.Views.MainWindow" xml ...
- emqtt 试用(五)emq 的用户密码认证
MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿名认证(anonymous),通过加载认证插件可开启 ...