全网最全Python项目体系练习500例(附源代码),练完可就业 6 s7 N" j3 _; Z: s/ P4 d: X$ p5 N, D
1.有一个jsonline格式的文件file.txt大小约为10K2 D+ i0 i2 s+ r) a; e
2.补充缺失的代码/ G' [8 p5 j8 n; D- H
3.输入日期, 判断这一天是这一年的第几天? 7 k5 U3 p0 A- D/ Q5 x( }4.打乱一个排好序的list对象alist? _8 w" `( p9 N3 o$ O5.现有字典 d= {‘a’:24,‘g’:52,‘i’:12,‘k’:33}请按value值进行排序?3 D( f4 t+ E# L* l" W) e4 t& ?
6.字典推导式 1 G5 [6 L. O2 x9 |7 k/ B! J7.请反转字符串 “aStr”?' }6 b u, I/ M4 l% \
8.将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字典 {k:1,k1:2,…}+ s. F; t) e8 i9 q; F
9.请按alist中元素的age由大到小排序 6 k4 K: K+ k6 W2 Y% y' m" C* ]10.下面代码的输出结果将是什么? ; i/ }5 Z, _) E. @ U1 I. P11.写一个列表生成式,产生一个公差为11的等差数列6 A7 o: d1 r7 X1 _
12.给定两个列表,怎么找出他们相同的元素和不同的元素? * ]) g! P% B: v5 i$ t4 L13.请写出一段python代码实现删除list里面的重复元素?# b/ _+ [3 P4 k0 r/ Q4 G/ |
14.给定两个list A,B ,请用找出A,B中相同与不同的元素 企业面试题 ) W- x$ d4 X' s3 M" U7 `& r8 L15.python新式类和经典类的区别?" ~. m& ^% a" l6 i
16.python中内置的数据结构有几种? k" @6 s4 Q/ `( u: N& Q17.python如何实现单例模式?请写出两种实现方式? 4 w# \+ u9 @, K. @5 \! R* t18.反转一个整数,例如-123 --> -321& Y) ]: E6 G4 H% `' I% r7 y2 ]
19.设计实现遍历目录与子目录,抓取.pyc文件 8 m* B5 B) Q" i N20.一行代码实现1-100之和- O, e) n7 N( }5 c* Y1 g
21.Python-遍历列表时删除元素的正确做法 # V* T4 F+ a6 x& H8 G% c Y- P% I, V; O22.字符串的操作题目 ! e2 h7 G3 B* [! U0 C. O, R9 D23.可变类型和不可变类型 ' p+ M s! C. u24.is和==有什么区别? * k# P9 S9 K% C9 j5 H6 B25.求出列表所有奇数并构造新列表 $ f: A+ h1 A: |3 {4 [26.用一行python代码写出1+2+3+10248 6 ~1 N/ g+ x# U/ G3 R% c. `27.Python中变量的作用域?(变量查找顺序)" w- Q& H) x- C7 f# m' J
28.字符串 “123” 转换成 123 ,不使用内置api,例如 int() ' m f5 d& [( a29.Given an array of integers $ q- z$ b! t9 g! \) }6 W' a6 l, A$ T30.python代码实现删除一个list里面的重复元素( X* r) g. e$ z. Y1 {0 r1 l- f9 b
31.统计一个文本中单词频次最高的10个单词? ! r* @! S8 p! A' _( b32.请写出一个函数满足以下条件 ) t% E+ X: P; R3 q( Q5 M& `33.使用单一的列表生成式来产生一个新的列表5 K% j3 m2 s/ u/ n" \* Z- x
34.用一行代码生成[1,4,9,16,25,36,49,64,81,100]1 b6 B' C- ]9 i& G
35.输入某年某月某日,判断这一天是这一年的第几天?3 i0 U9 U. s* X
36.两个有序列表,l1,l2,对这两个列表进行合并不可使用extend 8 f: a% {5 r8 E4 A8 X$ e+ a& R7 S% J; E37.给定一个任意长度数组,实现一个函数! p+ c5 J& }' V8 r( V
38.写一个函数找出一个整数数组中,第二大的数1 i- I( t# m4 o& c8 y1 g, C
39.阅读一下代码他们的输出结果是什么?; `) `4 e9 A4 P% [
40.统计一段字符串中字符出现的次数 1 o$ Z2 L4 I6 S3 ^0 V0 g# f41.super函数的具体用法和场景5 M" E! b* y4 E$ j, F0 k
42.Python中类方法、类实例方法、静态方法有何区别?4 N$ g3 k8 b6 F! h
43.遍历一个object的所有属性,并print每一个属性名?% ]$ P! B' N( k v, S
44.写一个类,并让它尽可能多的支持操作符?8 }, y% W( U. o+ @& P
45.介绍Cython,Pypy Cpython Numba各有什么缺点( o1 V$ r' Y$ u& X
46.请描述抽象类和接口类的区别和联系- y$ {- `# `& ?+ L& ~. Y
47.Python中如何动态获取和设置对象的属性?* t, K; B( j2 ?. r4 v; O% k4 c; _
48.哪些操作会导致Python内存溢出,怎么处理?, T% f V0 Z/ }
49.关于Python内存管理,下列说法错误的是 B " A5 o0 H# I0 h5 n50.Python的内存管理机制及调优手段?/ R$ O% i/ N2 W- v
51.内存泄露是什么?如何避免?' C2 y3 p% z. ^; V
52.python常见的列表推导式?% P. D2 @- ]7 y5 V
53.简述read、readline、readlines的区别?9 G. r1 _- K3 G
54.什么是Hash(散列函数)?# A* Z- z- j8 e: Z
55.python函数重载机制?' ?& C1 {; G! a# ~- L% U8 O5 J [
56.写一个函数找出一个整数数组中,第二大的数 2 E& I, B$ M8 U57.手写一个判断时间的装饰器* l& [( ?* S, |/ x
58.使用Python内置的filter()方法来过滤?+ n; v# D6 o% R0 u
59.编写函数的4个原则6 ?4 N8 x. l4 K5 Z! R
60.函数调用参数的传递方式是值传递还是引用传递?$ @, h/ `7 H* G
61.如何在function里面设置一个全局变量/ L$ E% e g% N: n
62.对缺省参数的理解 ? % k2 `, l" d( i# N5 s3 E$ {63.Mysql怎么限制IP访问? , J% I* j) N3 D& y64.带参数的装饰器? . P4 P' b E+ r+ j65.为什么函数名字可以当做参数用?+ `) t& {/ Y C5 S+ W* F
66.Python中pass语句的作用是什么?. _4 @+ {: R0 P1 ^6 G
67.有这样一段代码,print c会输出什么,为什么? 2 b; p/ \5 w+ ~5 t; D% P; N1 `68.交换两个变量的值? ) C B- Y% I8 l+ k5 G69.map函数和reduce函数?' |; G- S- W2 K
70.回调函数,如何通信的? 1 A9 {3 ]. i! S0 t71.Python主要的内置数据类型都有哪些? print dir( ‘a ’) 的输出? + Q; `. M _- S0 I; [72.map(lambda x:xx,[y for y in range(3)])的输出?' c7 l' s; P; W- K: H( p& b- Y
73.hasattr() getattr() setattr() 函数使用详解? [/ `6 p% M4 ^& A4 i74.一句话解决阶乘函数?5 n$ W# d# X0 m3 |' `8 e
75.什么是lambda函数? 有什么好处? 3 x! t* U' v9 n9 b& I$ j76.递归函数停止的条件? G( a+ V+ p* \0 O6 r. w! D* K$ x
77.下面这段代码的输出结果将是什么?请解释。: X- R+ v' D! _! [
78.什么是lambda函数?它有什么好处?写一个匿名函数求两个数的和 ( r- G! H2 f9 j8 d P79.对设计模式的理解,简述你了解的设计模式?/ _1 V. S5 X( e! f, }2 [& y
80.请手写一个单例 1 T% o: s! i/ Z8 L" {/ U81.单例模式的应用场景有那些? / _( e: `9 @5 Z9 \! B82.用一行代码生成[1,4,9,16,25,36,49,64,81,100], M7 F2 W/ I% y4 J# A7 H
83.对装饰器的理解,并写出一个计时器记录方法执行性能的装饰器?, Z7 F" ]: Y1 i2 z7 G1 L% [
84.解释以下什么是闭包?; N: ^, G4 Q, f8 y, d, x
85.函数装饰器有什么作用?7 v3 |& D8 d# g* W
86.生成器,迭代器的区别?( M2 J6 u% @% i/ e7 `& K m7 ^; h
87.X是什么类型?. } Q9 z0 N1 X; x
88.请用一行代码 实现将1-N 的整数列表以3为单位分组$ E3 A/ ?' X+ ]' y
89.Python中yield的用法? ! x/ u; O8 O4 w7 }90.Python中的可变对象和不可变对象? ) A5 h1 V V1 P" U8 w91.Python的魔法方法 ! e% w, K9 Z, \' _5 a92.面向对象中怎么实现只读属性?) R$ n* `; F, V3 m0 W+ n4 {/ y
93.谈谈你对面向对象的理解? 5 A9 r3 v. W% m4 D" g94.请写出一段代码用正则匹配出ip?: I; I. k w6 x( `8 i, `5 Y
95.a = “abbbccc”,用正则匹配为abccc,不管有多少b,就出现一次?" l) u8 o7 J$ e. D- s) v( h- b+ C( N
96.Python字符串查找和替换? 6 m8 O* A* `9 b7 B97.用Python匹配HTML g tag的时候,<.> 和 <.*?> 有什么区别 6 @+ ?3 K' {# ~( K9 u98.正则表达式贪婪与非贪婪模式的区别? $ z1 m* v2 O( ~( s: B, ]99.写出开头匹配字母和下划线,末尾是数字的正则表达式?* T% ^; Y6 w+ x( C; b) V9 ]9 }& o
100.正则表达式操作 0 U/ d( B# F; [; @4 E; e* V4 Z101.请匹配出变量A 中的json字符串。! u( `4 x' p$ r$ F* G4 |. h
102.怎么过滤评论中的表情?# ~2 V/ h, o, P0 {/ X$ i- x
103.简述Python里面search和match的区别 0 @ }9 z, G' p0 h& v* o104.请写出匹配ip的Python正则表达式 ' f0 h7 n) ?* s( [" c7 p+ y6 J" P% M105.Python里match与search的区别? ' R+ E1 p( s t; \. v: M& A106.进程总结 ) Z! O5 L6 L2 X$ G9 t& M4 P107.谈谈你对多进程,多线程,以及协程的理解,项目是否用?3 ~2 t3 G1 p' c+ g3 Y! ?$ M1 {
108.Python异常使用场景有那些? + e& e, G; F+ G: S109.多线程共同操作同一个数据互斥锁同步? / v. m+ E. c" V- X- m110.什么是多线程竞争?1 I' Y9 D6 l! b2 f. d( ]8 O2 ?
111.请介绍一下Python的线程同步?& d6 \: l% z* K
112.解释以下什么是锁,有哪几种锁? , k) `8 z% f5 @113.什么是死锁?1 U) l2 E; \( C+ Y/ z% w
114.多线程交互访问数据,如果访问到了就不访问了?4 I \7 f+ M2 n' u+ w% x0 T* _
115.什么是线程安全,什么是互斥锁? : J. ~6 I. i# E' T4 B* Y4 w116.说说下面几个概念:同步,异步,阻塞,非阻塞? ! T4 b. T+ K, Y) e" H117.什么是僵尸进程和孤儿进程?怎么避免僵尸进程? & f4 ^, U* u8 z118.python中进程与线程的使用场景?2 Q5 `- E F9 [: w
119.线程是并发还是并行,进程是并发还是并行?- l$ d) c+ L" E6 `
120.并行(parallel)和并发(concurrency)?4 m% K$ T6 I' M& I) h' b3 D
121.IO密集型和CPU密集型区别? 2 k8 p1 M& [6 p122.python asyncio的原理?! A* R3 i8 l1 `5 d
123.怎么实现强行关闭客户端和服务器之间的连接?7 p" v+ W4 p7 Q
124.简述TCP和UDP的区别以及优缺点?/ }( ?7 W) b5 S' w, q
125.简述浏览器通过WSGI请求动态资源的过程? 9 R# e8 {5 `3 M126.描述用浏览器访问www.baidu.com的过程 + b$ k0 W" h8 R) c e& u4 X; [127.Post和Get请求的区别? % v3 G$ S8 J3 {/ B9 |& m7 j; u128.cookie 和session 的区别? 3 a* j0 x6 w1 y129.列出你知道的HTTP协议的状态码,说出表示什么意思?) m( V9 h2 Z( h8 }6 J; P8 R
130.请简单说一下三次握手和四次挥手?! m: E7 B K3 G+ x& ~" R# l+ ^
131.说一下什么是tcp的2MSL? * S9 i" {7 B3 L+ t( B6 n132.为什么客户端在TIME-WAIT状态必须等待2MSL的时间? ! h! X0 J+ |. w3 D* ^133.说说HTTP和HTTPS区别? 9 t1 s) t6 @5 m2 t% b134.谈一下HTTP协议以及协议头部中表示数据类型的字段? : ?# u# Y; n* t( e9 c135.HTTP请求方法都有什么?. T) A3 i* r: r4 p* W
136.使用Socket套接字需要传入哪些参数 ? # F& A7 L* i3 v" x2 ?6 C: L137.HTTP常见请求头?# F8 u. y; k5 d, l! H3 t% h" O
138.七层模型? - @+ L# N2 K- z' K8 H139.url的形式? ) N" O. Y- l, M6 Y140.对Flask蓝图(Blueprint)的理解? - m2 Q# B' Y% e141.Flask 和 Django 路由映射的区别?, t+ S5 O9 N: q/ \( ~: h: l: t1 ]
142.什么是wsgi,uwsgi,uWSGI?9 k% M$ R" y: \0 y5 V _
143.Django、Flask、Tornado的对比? 0 j2 m9 D# u0 S6 _7 T& v/ S: j144.CORS 和 CSRF的区别? 8 @. n, M8 d1 L9 |* ?1 \145.Session,Cookie,JWT的理解8 S% W! H; P# I3 }. V$ e$ V
146.简述Django请求生命周期 / C* {0 k/ R$ u147.用的restframework完成api发送时间时区 - ?& {7 R2 s% t2 W# B& X( B5 M: c, ^148.nginx,tomcat,apach到都是什么? ! w/ o. }6 a: v4 g149.请给出你熟悉关系数据库范式有哪些,有什么作用?) G. `% Y5 q% Z$ x
150.简述QQ登陆过程 ) p0 H A: n5 B5 ^151.post 和 get的区别?$ j) i7 t$ _8 W( B( J; _
152.项目中日志的作用 $ f, k: n9 O9 @3 n! C153.django中间件的使用?7 P' r' |2 B% J: J2 V
154.谈一下你对uWSGI和nginx的理解? ! l! A7 r8 S' x3 Y6 `# D155.Python中三大框架各自的应用场景? 9 x4 Z i. K8 }7 B156.Django中哪里用到了线程?哪里用到了协程?哪里用到了进程? , d* C5 q6 f( e6 F$ T% D' c E157.有用过Django REST framework吗? 2 w4 K# W3 E) K5 m- i: b' J158.对cookies与session的了解?他们能单独用吗?$ Z/ w9 ^ n+ O" T n- k w2 I
159.试列出至少三种目前流行的大型数据库 $ @7 K2 Z, \) u w& L160.列举您使用过的Python网络爬虫所用到的网络数据包?" ^3 Q7 t* H4 W: Q7 }1 V# e
161.爬取数据后使用- f/ O* ?# R6 H% `" f5 W% _' d
哪个数据库存储数据的,为什么? 162.你用过的爬虫框架或者模块有哪些?优缺点? ) g# Y [4 J4 K G$ T. x( X163.写爬虫是用多进程好?还是多线程好? 9 s: m, k* Q0 w, {% U164.常见的反爬虫和应对方法? " B* K5 K2 h# C* J3 q165.解析网页的解析器使用最多的是哪几个?. x8 u' G. ?7 _" D/ n0 G
166.需要登录的网页,如何解决同时限制ip,cookie,session 6 L/ j2 C! z6 [, \1 G; ?167.验证码的解决? % h2 e1 @$ k+ |2 D/ w* c2 c168.使用最多的数据库,对他们的理解?( M/ c' o, v6 C
169.0 v. K! D: O8 f j
编写过哪些爬虫中间件? 170.“极验”滑动验证码如何破解? ! u9 }; _- E: y0 f% m8 Q171.爬虫多久爬一次,爬下来的数据是怎么存储?) {$ L' h& h. ~! B) n
172.cookie过期的处理问题?; U, L2 S) r$ f! j ~& r# g
173.动态加载又对及时性要求很高怎么处理?) X( O/ n% P W% M& V
174.HTTPS有什么优点和缺点? 1 z$ |8 ~; R. }175.HTTPS是如何实现安全传输数据的?3 b5 [+ @/ ?& l' E9 S) X
176.TTL,MSL,RTT各是什么? ' m3 a# D7 e' b1 }7 `' C177.谈一谈你对Selenium和PhantomJS了解% a8 d1 s5 z" ~7 A
178.平常怎么使用代理的 ?1 D: D6 k+ G% ?: X& ?
179.存放在数据库(redis、mysql等)。' m2 w: ^) Z/ D
180.怎么监控爬虫的状态?% X( m: N4 ~5 D9 h4 H* ^8 Y4 ]
181.描述下scrapy框架运行的机制?% a" j3 }2 F8 T5 P, ^0 f |
182.谈谈你对Scrapy的理解?' ~. v- E" R6 \% j0 g
183.怎么样让 scrapy 框架发送一个 post 请求(具体写出来) ' [4 o! o( ~" p% w; Y4 l* v184.怎么监控爬虫的状态 ? - x& ^8 o& P9 @3 R5 c! h185.怎么判断网站是否更新? : ^9 P- F* L5 z# [) G) V" G186.图片、视频爬取怎么绕过防盗连接# l, W: Q( j6 L7 _
187.你爬出来的数据量大概有多大?大概多长时间爬一次? ( I2 x( B3 \4 Z: r& B188.用什么数据库存爬下来的数据?部署是你做的吗?怎么部署?# Y$ g. `/ a4 t+ s
189.增量爬取3 N. p6 H2 k& I5 r4 L* X* L2 Y- L) s
190.爬取下来的数据如何去重,说一下scrapy的具体的算法依据。$ k" s: x0 v: j+ K- m
191.Scrapy的优缺点? + z, K$ Q' K! s) ]. m192.怎么设置爬取深度?# N1 p- i$ f6 Z7 |
193.scrapy和scrapy-redis有什么区别?为什么选择redis数据库? 8 @ t$ q* t/ ~194.分布式爬虫主要解决什么问题? w! f% u1 C, T9 e2 L
195.什么是分布式存储? 1 n7 q1 z/ z* M1 t196.你所知道的分布式爬虫方案有哪些? c& O1 ?: ?4 A4 H+ G6 F
197.scrapy-redis,有做过其他的分布式爬虫吗?/ Y2 X; d9 S& h, S0 G
198.主键 超键 候选键 外键 7 i& a J8 F, g199.视图的作用,视图可以更改么?: D' R# {5 S* K) [1 z; `' _
200.drop,delete与truncate的区别 4 f. h# t- Q9 w$ R201.索引的工作原理及其种类 ( ] S; q) q* R3 F+ c# i+ b202.连接的种类' `/ v6 a0 m `2 M4 [, q/ S0 h
203.数据库优化的思路2 F" h$ X+ G/ S9 x' D8 y0 Y. c
204.存储过程与触发器的区别$ e/ G+ I- T- v7 e% s
205.悲观锁和乐观锁是什么? 4 R5 ~5 E J$ h1 [* A8 |206.你常用的mysql引擎有哪些?各引擎间有什么区别?3 K! v$ V+ T% p4 I9 J& t+ j" t
207.Redis宕机怎么解决?$ Q& L3 f' @0 T9 B
208.redis和mecached的区别,以及使用场景5 Y2 L8 E2 N$ d4 v. Z. M
209.Redis集群方案该怎么做?都有哪些方案? 2 T2 w1 `5 F$ V e9 e2 `/ \; C$ [210.Redis回收进程是如何工作的 4 P1 ?2 F" O9 f% A) R211.MongoDB中对多条记录做更新操作命令是什么?' V Y, e/ L0 l" \3 Q+ U
212.MongoDB如何才会拓展到多个shard里? ! g" K" d; u% `% b5 }213.编写测试计划的目的是% [ m ~. w7 |
214.对关键词触发模块进行测试3 e4 W: p: y8 }* I* J
215.其他常用笔试题目网址汇总 2 g* `5 F* _. W6 A n- N216.测试人员在软件开发过程中的任务是什么4 ]+ H1 L: z6 X0 L8 l$ \3 D
217.一条软件Bug记录都包含了哪些内容? ( S0 n9 [- k0 h' [218.简述黑盒测试和白盒测试的优缺点3 j4 T Z' r8 E8 C* v f4 H
219.请列出你所知道的软件测试种类,至少5项6 M8 I0 H: H9 Z, M
220.Alpha测试与Beta测试的区别是什么? 4 X- v, {$ O- j) Q* W. t221.举例说明什么是Bug?一个bug report应包含什么关键字? 8 Z1 J% u) y3 i. r& g) `6 f& ?222.数组中出现次数超过一半的数字-Python版 p- ^3 O2 ? ?0 O1 Q! @+ y) c223.求100以内的质数 9 S3 v8 t! `: ~. c! Q3 L224.无重复字符的最长子串-Python实现+ W* E( x) P& }3 Y5 |$ `& M8 o
225.通过2个5/6升得水壶从池塘得到3升水 6 x& {6 Q1 m W7 D# ~% x+ W& j226.什么是MD5加密,有什么特点? * T+ V8 z* `) \) o( N227.什么是对称加密和非对称加密2 C% Q. e& Y" L. I- I% d
228.冒泡排序的思想?6 h8 p+ F# u {+ P, R
229.快速排序的思想?5 h, A0 e' d1 e/ o: ?" h
230.如何判断单向链表中是否有环?3 g& R& ^% X. h8 B2 X% K! _
231.你知道哪些排序算法(一般是通过问题考算法)7 K' Z$ n6 b5 [) N
232.斐波那契数列 8 `. w$ p9 G( i( p0 N0 w233.如何翻转一个单链表? . Z- b2 D2 F3 Y1 g234.青蛙跳台阶问题 9 z' A$ k$ A: e1 d235.两数之和 Two Sum ' r- a* F! R# C3 f1 y236.搜索旋转排序数组 Search in Rotated Sorted Array" V* \& V* [1 q: ]7 D1 A5 n. j" Y
237.Python实现一个Stack的数据结构 0 Q, E0 s' Y0 t$ h* S1 g238.写一个二分查找 & J0 w8 }6 [7 x; X; O" H: S239.set 用 in 时间复杂度是多少,为什么?6 X8 x# r7 I3 o1 _
240.列表中有n个正整数范围在[0,1000],进行排序; & {$ a/ D; p6 u3 o241.面向对象编程中有组合和继承的方法实现新的类 Q7 G G; ~( V/ s7 T: o: `
242.找出1G的文件中高频词! r/ _( g: l1 _: w- v
243.一个大约有一万行的文本文件统计高频词. D/ D d3 F* ]" |1 U) K6 G. S
244.怎么在海量数据中找出重复次数最多的一个? 6 [. x9 Q' _4 q$ I9 I D; V245.判断数据是否在大量数据中 % [9 E/ {/ N& M7 c! }51.内存泄露是什么?如何避免? ' z! _ S7 S( O8 t C; h+ b3 F 6 L X2 ^6 p5 ^; Q' l: C4 l7 S6 X& S2 r, ]
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。0 z5 w4 `- u6 i T( t4 ]
% ` s& t7 I; Z' C/ e( ?5 Y# P) ?
! G/ t0 Z4 [- c+ P* [有 del() 函数的对象间的循环引用是导致内存泄露的主凶。不使用一个对象时使用: del object 来删除一个对象的引用计数就可以有效防止内存泄露问题。, _' K: b" _! A' W' |) b
* g5 v/ G7 ]' P7 O, {
9 B4 M4 R) u2 ~8 ]+ Z* r i通过Python扩展模块gc 来查看不能回收的对象的详细信息。 - I) h6 c1 @3 E( L9 q: a/ J% h z9 [4 X2 b- A% q
; t" q* Q2 j0 K! p8 w可以通过 sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为0来判断是否内存泄露 % _1 i* r7 f! |& W7 J+ p7 t+ b Q" s7 H8 D' t" Y4 G& I O
* s0 K1 A: Z! u+ v
52.python常见的列表推导式?; `, G; e4 x3 p1 y0 I6 b
# K9 }, Y$ A d7 _2 P / G; q0 w: Q1 x0 {7 [, {[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] " Z1 E; U* L$ K1 l- g# S F1 K& y z' Y+ @ @53.简述read、readline、readlines的区别?0 p# b! }8 J( x
0 N5 A! }4 n1 \" j9 u' @ " T7 U) R6 S% Q- Q* w. Eread 读取整个文件# |% J% _0 U; g
readline 读取下一行, r3 v! |- u; `4 h$ _) v) L; k+ p
readlines 读取整个文件到一个迭代器以供我们遍历1 e5 ^9 n4 T! A, N) B3 F
b t+ c; T; x% A) Z _: N5 Z' C3 K6 b$ R
54.什么是Hash(散列函数)?& m" u8 K8 ]% F7 `
# `. k4 i. F& y% T$ T, x% U: Q% e* A另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。! X4 W- x7 \+ H1 f
6 A4 s. e3 d7 ]* J) y2 B' k- R2 F# k" O& t7 G
好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。 ; j# k4 S3 S+ O* I3 ]. U; v! i: d# H9 f: W0 a
0 e$ f* i5 s8 I, J5 c, J那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。: W' M5 g, h- }1 q: W
" {7 M. ^; C9 w* k' z8 e, a3 x) c. _9 `$ _& i
好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。 ! w% g. r5 P w* L( N/ }0 b! s' V' o6 ]* y4 \2 D+ P! W5 k' P' s
0 o- G# T5 N$ ~: S; u& {7 b0 s
56.写一个函数找出一个整数数组中,第二大的数( k# T$ `( ^# Y0 }; `+ W
2 f7 t5 Z: p+ j+ c" K
$ Z$ j2 T) {' m! j) H) i
57.手写一个判断时间的装饰器 ! [3 b2 J$ K2 u& c5 Q8 d# C! ?$ W0 L& l9 b/ A3 w, t
/ o( U# L9 _( }% y: l* k" p
8 e- q" a" `7 [" J! t4 o
- H/ G1 o. O2 _- p4 J& r4 K) D58.使用Python内置的filter()方法来过滤? * S) E* R4 g5 Q1 T + E6 l0 S7 w$ x- G! Z2 _/ \# w: n; D( f$ i. M& d
list(filter(lambda x: x % 2 == 0, range(10)))$ ]. v/ ]; C6 | z/ ?6 a- |6 j' t' y! {1 d
1 : Q' w- D, o2 \59.编写函数的4个原则 4 J/ h% s; {) v8 |& J# x- ^' | ]# W9 I. Q5 Y
1 r8 L+ Q2 x2 q9 n# L( ?1.函数设计要尽量短小 5 \# d8 E1 Z1 W& @; i( `! A) w1 Z5 d, \5 Y4 y9 r9 V
% y! }" p# L% S+ A$ z7 ]
2.函数声明要做到合理、简单、易于使用 ( M- W! }% }6 f8 h) i: k' L- f" C+ |; K3 S9 M
/ ?* t F; b1 P L
3.函数参数设计应该考虑向下兼容 / I8 C5 C' j/ U) j6 r 5 p5 f/ n2 S X# u/ C$ C3 ? / e( P9 m& o. y5 v4 {% v4.一个函数只做一件事情,尽量保证函数语句粒度的一致性 % {5 J: ], f: q' t4 v+ z# e1 C" ~. `9 A9 ?3 Q; T1 Y' W
$ ^4 l$ O1 e" b6 |
60.函数调用参数的传递方式是值传递还是引用传递? ) C8 k5 X0 ^# N( i $ h$ H7 e2 V) F8 ~$ F 6 [ t3 U H4 V: `* C! u1 cPython的参数传递有:位置参数、默认参数、可变参数、关键字参数。; \% `" R6 v/ U9 n) b
函数的传值到底是值传递还是引用传递、要分情况:% d7 h. G* S$ r3 x k" V2 I1 ~ d. k
1 g [2 M1 N* z: G8 D* ^- g/ \! l7 ]: A
不可变参数用值传递:像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象。) g5 U) T2 E6 D' S2 P
可变参数是引用传递:比如像列表,字典这样的对象是通过引用传递、和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变。) a6 q3 f w, s8 E, H& M8 ^& K
( @/ Q$ U, v# O& k* [( p* H 8 D2 M' ]% K1 R) x, h3 D61.如何在function里面设置一个全局变量 % E1 c* w( ?7 c: s+ w2 U+ A# m" w1 u( V. c. Q; D