首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

必读!53个Python经典面试题详解

在我每一次应聘Python数据科学家面试中,这个问题都会被问到。所以对这个问题答案,我可以说是了如指掌。 列表是可变。创建可以对其进行修改。 元组是不可变。...列表表示是顺序。它们是有序序列,通常是同一类型对象。比如说按创建日期排序所有用户名,如["Seth", "Ema", "Eli"]。 元组表示是结构。可以用来存储不同数据类型元素。...我们将在一个可变对象(列表)上下文中讨论这个问题,对于不可变对象,浅拷贝和深拷贝区别并不重要。 我们将介绍三种情况。 1. 引用原始对象。这将新对象li2指向li1所指向内存中同一位置。...你最喜欢Python哪个库? 在处理大量数据时,没有什么比Pandas(熊猫)更有帮助了,因为Pandas让操作和可视化数据变得轻而易举。 23. 举出几个可变和不可变对象例子?...不可变意味着创建不能修改状态。例如:int、float、bool、string和tuple。 可变意味着可以在创建修改状态。例如列表(list)、字典(dict)和集合(set)。 24.

6.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

为什么我数据按顺序排序原来如此 | Java Debug 笔记

接口返回数据顺序总是固定问题描述====我在开发突发奇想。将表头信息也给查出来一并返回给前端了。但是正因为这一举动却带来嘲讽。...上面是自己写一个列子。结果很明显我们写入顺序是a、d、b、c、e 但是显示出来顺序缺失a、b、c、d、e 。后来网上翻阅了一下资料说HashMap 是不会按照写入顺序排序。...HashMap key排序是按照keyhash值进行排序最近翻看了下HashMap源码了解了其内部元素存储原理才明白这个道理。此时才知其所以然。...感觉有点排序感觉当时为了解决问题就决定尝试一把。结果是完美的。bug解决收工回家。对应刚入行我还是很有成就感。时隔多年现在又重新收拾了下自己bug。...在每次通过HashMap put进数据之后会将当前添加进来数据和上次添加node进行链表关联。这样就使其都在一条链上我们上面添加数据最终其内部一个结构图如下当然内部会有一个默认节点作为头结点。

11910

53 道 Python 面试题,帮你成为大数据工程师

问题是无序。让我们开始。 1.列表和元组有什么区别? 在我进行过每次python /数据科学访谈中,都曾问过我这个问题。像手背一样知道答案。 · 列表是可变。创建可以对其进行修改。...即:按创建日期排序所有用户名,[" Seth"," Ema"," Eli"] · 元组具有结构。每个索引可能存在不同数据类型。...不变对象(如字符串,数字和元组)是按值调用。请注意,在函数内部进行修改,name值不会在函数外部发生变化。name值已分配给该功能范围内内存中新块。...22.您最喜欢使用Python哪个库? 当处理大量数据时,没有什么比熊猫那么有用了,这使得操作和可视化数据变得轻而易举。 23.命名可变和不可变对象可变表示创建无法修改状态。...可变表示状态可以在创建后进行修改。示例是列表,字典和集合。 24.您如何将数字四舍五入到小数点三位? 使用round(value,decimal_places)函数。

10.1K40

Python 经典面试题 二

•引用计数:Python在内存中存储每个对象引用计数,如果计数变成0,该对象就会消失,分配给对象内存就会释放出来。...3.列出 Python 中可变数据类型和不可变数据类型,为什么?...1、可变数据类型:list、dict、set 2、不可变数据类型:int/float、str、tuple 原理:可变数据类型即公用一个内存空间地址,不可变数据类型即每产生一个对象就会产生一个内存地址。...print输出对象时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return数据 __del__:删除对象执行方法 8.请说明 sort 和 sorted 对列表排序区别...•sorted(L)返回一个排序L,不改变原始L,L.sort()是对原始L进行操作,调用后原始L会改变,没有返回值;所以a = a.sort()是错啦!a = sorted(a)才对。

35352

python爬虫常见面试题(一)

4、python里面如何拷贝一个对象?(赋值、浅拷贝、深拷贝区别) 5、如果custname字符串编码格式为uft-8,如何将custname内容转化为gb18030字符串?...另外,关于这个问题,面试官很容易引出另一个问题:python中哪些数据类型是可变,哪些是不可变? 首先,可变/不可变是针对该对象所指向内存中值是否可变来判断。...如可变类型数据类型有列表和字典,还有集合(感谢@自由早晚乱余生纠正)。不可变类型数据类型有字符串,元组,数字。...变化是a指针(这里引用C中概念)从指向数字1变成数字2。a对象指向内存中值没有发生变化,因此数字是不可变类型数据类型。字符串,元组也是同理。...注意对于不可变对象而言,如果修改了其中一个对象,就相当于修改它指针指向,另一个对象是不会跟着变化

3.6K20

对于初学者来说,有哪些好 Python 示例?

在列表转换为元组,我们无法更新列表,因为元组是不可变。...当您想要从可迭代对象末尾(右侧)选取值时,可以利用负索引来获益。 什么是 Python 数据类型 SET,如何使用它? “set”是一种 Python 数据类型,是一种集合。...自2.4版本以来,它一直是Python一部分。集合是不以任何特定方式排序不同且不可变集合。 如何打印从 1 到 100 所有数字总和?...数字 - Python 最常见内置数据结构是整数、复数和浮点数。 例 5, 2+3i, 3.5. 列表 − 列表是按特定顺序排序对象集合。列表组成部分可以是多种数据类型。...集合 − 集合是按任何特定顺序排列不相关项集合。 例 (5, 2, 8, 1) 字典 - 字典是键和值对集合,其中每个值都可以通过其键访问。项目的顺序/顺序无关紧要。

2K40

技术 | Python从零开始系列连载(二十六)

一般拿到日期型数据时基本都是字符串表示,如 '2017-04-24' 和 '2017/04/24 22:09:48' 。该如何将其转换为日期型和日期时间型呢?...,但转换成了日期时间型,单后面多了表示时间部分00:00:00; 第三个红框:如果你不想保留日期后面的时间部分00:00:00,只需在末尾加上date()方法。...数据结构 列表:是一个可变序列,之所以说可变,是因为可以对列表数据类型可以进行增、删、改操作,而不可变对象则没有这三种操作。...,而非视图对象; count方法计数; index方法返回索引位置; reverse方法实现元素颠倒; sort方法排序; 创建一个元组 元组是不可变序列,故其没有增、删、改权限。...第一个字典通过花括号构建; 第二个字典通过dict函数构建; 第三个构造了一个嵌套字典; 由于字典也是一个可变对象,故其也有增、删、改操作,具体如下: 查 所以,setdefault方法既可以实现查功能

1.5K50

一份真实Python面试题

所以,Python常用数据结构有:列表、字典、元组、集合。 关于这个问题,一般也会顺带问:Python中哪些数据类型是可变,哪些是不可变?...答:可变/不可变是针对该对象所指向内存中值是否可变来判断。如可变类型数据类型有:列表、字典、集合;不可变类型数据类型有:字符串、元组、数字。 2....(2)当对象可变对象时,如果是赋值和浅拷贝,那么改变其中任意一个值,那么另一个会跟着发生变化;如果是深拷贝,是不会跟着发生改变。 5....如果 custname 字符串内容为 utf-8 字符,如何将 custname 内容转为 gb18030 字符串?...给列表中字典排序:假设有如下 list 对象 alist=[{"name":"a", "age":20}, {"name":"b", "age":30}, {"name":"c", "age":25}

1K40

Python lambda 函数深度总结

(x): return x + 1 到目前我们 lambda 函数 lambda x: x + 1 只创建一个函数对象返回任何内容,这是因为我们没有为其参数 x 提供任何值(参数)。...,我们会在 lambda 函数整个构造以及我们传递给它参数周围添加括号 上面代码中要注意另一件事是,使用 lambda 函数,我们可以在创建函数立即执行该函数并接收结果。...,我们需要将过滤器对象传递给 Python 标准库相应函数:list()、tuple()、set ()、frozenset() 或 sorted()(返回排序列表) 让我们过滤一个数字列表,只选择大于...与 filter() 函数一样,我们可以从 map 对象中提取与原始类型不同类型可迭代对象,并将其分配给变量。...(IIFE)定义 如何使用 lambda 函数执行条件操作,如何嵌套多个条件,以及为什么我们应该避免它 为什么我们应该避免将 lambda 函数分配给变量 如何将 lambda 函数与 filter(

2.2K30

Python——列表

Python 中所有对象都有其自己唯一 id。 id 在创建时已分配给对象。 id 是对象内存地址,并且在每次运行程序时都不同。 我打算用id()函数来取地址,从而展示del做法。...name_2 = "Nicholas Zhao si" ''' id()函数返回指定对象唯一 id。 Python 中所有对象都有其自己唯一 id。 id 在创建时已分配给对象。...一般而言这种方式并没有什么用,如果是这种情形,你应该直接使用整个列表 这段代码执行结果如下所示: ? 可变类型对象 python中有一点,之前一直都没有感受到,那就是可变类型对象都是引用赋值。...这是因为这些类型变量都只能容纳一个值,之后操作改变了这个值,那么变量就会立即指向另外一块内存空间。所以这个问题很操蛋。下面的代码演示了可变类型对象都是引用赋值。...字符串是不可变对象,我们能使用下标读取str_1中字符,但是没有办法修改它! print(str_1[1]) 程序执行结果如下: ?

1.9K10

温故而知新:周末复习一下 Android & Java 面试题

谈谈冷启动与热启动 app冷启动: 当应用启动时,后台没有该应用进程,这时系统会重新创建一个新进程分配给该应用,这个启动方式就叫做冷启动((后台不存在该应用进程) 冷启动因为系统会重新创建一个新进程分配给它...Theme中windowBackground等属性设置给MainActivity以及配置Activity层级上一些属性、再inflate布局、当onCreate/onStart/onResume方法都走完了最后才进行...中是否有数据,如果没有数据,NIO不会阻塞,因为阻塞这条线程就可以去做其他事情,过一段时间再回来判断一下有没有数据。...String 为什么要设计成不可变 1)字符串池需求字符串池是方法区(Method Area)中一块特殊存储区域。...如果字符串不是不可变,那么改变一个引用(如: string2)字符串将会导致另一个引用(如: string1)出现脏数据

65000

“面试不败计划”: java语言基础面试题(三)

如果 final 修饰变量,意味着该变量值在初始化不能被改变。finalize 方法是在对象被回收之前调用方法,给对象自己最后一个复活机会,但是什么时候调用 finalize 没有保证。...java.lang.Cloneable 是一个标示性接口,包含任何方法,clone 方法在 object 类中定义。...回答出编译器对final域要遵守两个重排序规则更好: 1.在构造函数内对一个final域写入,与随后把这个被构造对象引用赋值给一个引用变量,这两个操作之间不能重排序. 2.初次读一个包含final...域对象引用,与随后初次读这个final域,这两个操作之间不能重排序 10、java中int char,long各占多少字节?...Integer 对象会占用更多内存。Integer是一个对象,需要存储对象数据。但是 int 是一个原始类型数据,所以占用空间更少。

38130

周末复习 Android & Java 面试题

谈谈冷启动与热启动 app冷启动: 当应用启动时,后台没有该应用进程,这时系统会重新创建一个新进程分配给该应用,这个启动方式就叫做冷启动((后台不存在该应用进程) 冷启动因为系统会重新创建一个新进程分配给它...对XML解析主要有: DOM(文档对象模型,Document Object Model)、SAX(Simple API for XML)和StAX(Java 6中引入解析XML方式,Streaming...中是否有数据,如果没有数据,NIO不会阻塞,因为阻塞这条线程就可以去做其他事情,过一段时间再回来判断一下有没有数据。...String 为什么要设计成不可变 1、字符串池需求字符串池是方法区(Method Area)中一块特殊存储区域。...如果字符串不是不可变,那么改变一个引用(如: string2)字符串将会导致另一个引用(如: string1)出现脏数据

53820

Python 基础一 (列表)

列表[开始位置: 终止位置: 步长和方向] ---- 开始位置包含在内,终止位置包含在内; 步长默认值为1,当步长设置为正整数,代表方向从左往右,当步长设置为负整数,代表从往前进行切片; 起始位置和终止位置...,如果填,代表从头到尾所有数据。...只了解它工作原理: 不可变对象(如字符串、数字和元组等)是按值调用。请注意下面的例子,当在函数内部修改时,name值在函数外部不会发生变化。...可变对象(如列表等)是通过引用调用。...key -- 主要是用来进行比较元素,只有一个参数,具体函数参数就是取自于可迭代对象中,指定可迭代对象一个元素来进行排序

68010

Java字符串面试问答

Java基础面试问题 --------- Java中字符串是什么?字符串是数据类型吗? String是Java中一个类,并在java.lang包中定义。它不是像int和long这样原始数据类型。...几乎所有Java应用程序都使用String,关于String我们应该了解一些有趣事实。Java 中不可变字符串状语从句:Java最后字符串,JVM使用字符串池存储所有字符串对象。...字符串池是可能,因为字符串在Java中是不可变。 它提高了安全性,因为任何黑客都无法更改其值,并且它用于存储敏感信息,例如数据库用户名,密码等。...这存在安全风险,因为任何有权访问内存转储的人都可以找到明文形式密码。 如果我们使用char数组存储密码,则在完成密码设置可以将其设置为空白。...,它将打印“ PANKAJ”,因为我们将s2字符串分配给s1。

1.2K50

腾讯面试

一种错误思想是只要对写数据方法加锁,其实这是错,对数据进行操作所有方法都需加锁,不管是读还是写。...共享状态 (1) 无状态对象: 无状态对象一定是线程安全,因为不会影响到其他线程。 (2) 线程关闭: 仅在单线程环境下使用。...不可变对象 可以使用final修饰对象保证线程安全,由于final修饰引用型变量(除String外)不可变是指引用不可变,但其指向对象可变,所以此类必须安全发布,也即不能对外提供可以修改final...由于创建对象和垃圾回收器释放丢弃对象所占内存空间,内存会出现碎片。碎片是分配给对象内存块之间空闲内存洞。碎片整理将所占用堆内存移到堆一端,JVM将整理出内存分配给对象。...当对象被赋给任意变量时,引用计数器每次加1当对象出了作用域(该对象丢弃不再使用),引用计数器减1,一旦引用计数器为0,对象就满足了垃圾收集条件。

84920

String 可变真的是因为 final 吗?

什么是不可变? 《Effective Java》中对于不可变对象(Immutable Object)定义是:对象一旦被创建对象所有的状态及属性在其生命周期内不会发生任何变化。...这就意味着,一旦我们将一个对象分配给一个变量,就无法再通过任何方式更改对象状态了。...; 2)其次,String 类被 final 修饰,也就是不可继承,避免被他人继承破坏; 3)最重要!...是因为 Java 作者在 String 所有方法里面,都很小心地避免去修改了 char 数组中数据,涉及到对 char 数组中数据进行修改操作全部都会重新创建一个 String 对象。...于是,糟糕事情发生了,HashSet 中出现了两个相等元素,破坏了 HashSet 包含重复元素原则。

56830

Android | 如何使程序实现线程安全(拓展关键词:ThreadLocal、重排序、volatilefinal)

可能共享CPU时间片; 线程是存在于进程当中, 同一个进程中线程之间是可以共享内存; 线程安全产生原因:可变资源(内存)线程间共享(关键词“可变”和“共享”) 线程间共享资源不用考虑线程安全了...共享资源 共享才会产生线程安全问题, 所以尽量共享; 共享不可变资源(volatile、final) 禁止重排序 有条件地共享可变资源 (更改刷新)可见性 一个线程对共享资源修改...对象时候, 访问是(绑定到不同线程)不同底层数据结构ThreadLocalMap, 读写是不同数据; 故 实现了, 同属主线程一系列子线程间, 资源共享,解决了线程安全问题...设置final的话,还有另外问题, 还要考虑什么时候去初始化它,还要考虑可见性, 这就还要考虑加锁了; 避免存储大量对象 因, 底层数据结构、Hash冲突解决方案和Hash计算算法, 已经做了限制...; 用完及时移除对象 ThreadLocal自身没有监听机制, 如果你设置ThreadLocal存在周期非常长, 那对应线程就会一直存在, 其引用不会被回收,有内存泄漏风险 共享不可变资源

1.1K10

final语义与工作原理

final数据缓存放在寄存器中,对比必须要加载non-final数据情况下,它不需要从主内存中加载就可以获取 并发线程下是安全(不可变变量) 对于final修饰字段在所有线程中是属于不可变(基本类型值不可变...DefineFinalObject()创建对象并引用对应对象地址 在main线程方法中,可以对不可变defineFinalObject属性信息进行修改,说明引用类型不可变是指对应对象内存地址...原则,线程访问final数据一定是在完成初始化最终数据且无法再进行修改(引用类型是可以修改其属性信息),从而保证了线程对final修饰变量是属于线程安全共享数据 final与static使用分析...copy一份相同数据作为缓存,不需要读取主内存数据,同时final写是在构造器中完成,也就是在构造器中添加内存屏障,也保证了在对象构造器之外不能再对final数据修改操作进行重新排序 同理,对于...final修饰变量为最新版本数据 如果在构造器函数中执行final变量读操作在写操作之后,那么会看到final分配给变量最终最新版本数据 读取共享变量final数据,则必须先要访问这个共享变量引用对象然后再读取

49620
领券