热饭面试复习【python常见面试题 】2/4

简介: 热饭面试复习【python常见面试题 】2/4

前言

终于复习完了基础理论,现在进入python阶段。其实python如果你已经学习过了,那么此处复习的就应该是那些经常忘记,比较难写的函数库名和面试题等。

注意,一旦你简历中写了精通python,那么面试官不可能问你简单的常见的,比如列表的增删改查这种。问,就一定问一些比较偏门冷门的,所以这里进行列举:


常见易忘题:

我敢打赌你不百度的情况下,答不对全部!


1时间格式化输出

datetime.strptime('17/Sep/2012:11:40:00','%d/%b/%Y:%H:%M:%S').strftime('%Y%m%d-%H%M%S')
 %y 两位数的年份表示(00-99)
  %Y 四位数的年份表示(0000-9999)
  %m 月份(01-12)
  %d 月内中的一天(0-31)
  %H 24小时制小时数(0-23)
  %I 12小时制小时数(01-12) 
  %M 分钟数(00-59)
  %S 秒(00-59)
  %a 本地简化星期名称
  %A 本地完整星期名称
  %b 本地简化的月份名称
  %B 本地完整的月份名称
  %c 本地相应的日期表示和时间表示
  %j 年内的一天(001-366)
  %p 本地A.M.或P.M.的等价符
  %U 一年中的星期数(00-53)星期天为星期的开始
  %w 星期(0-6),星期天为星期的开始
  %W 一年中的星期数(00-53)星期一为星期的开始
  %x 本地相应的日期表示
  %X 本地相应的时间表示
  %Z 当前时区的名称
  %% %号本身


2动态给类生成类函数

def gen_unit_test(self, test_name, function):
    setattr(self, 'test_{}'.format(test_name), function)


3获取命令行返回值

x = subprocess.check_output('adb shell cat /system/build.prop | grep "product"',shell=True)
print x.split('\r\n')


4永久存储模块

pickle.dump() 存
pickle.load() 取


5正则

符号:
|    是或的意思
.    是充当任意一个字符
^    是字符串的开始
$    是字符串的结尾
*    表达0次以上
+    表达1次以上
?   表达0,1
{}   表达次数
[]   表达内部任意一个字符
[0-9] 表达0~9 
[^]  表达不包含
+?    ?紧贴前面+是代表非贪婪模式,取得越少越好。
()   把正则表达式分成子组
\d   匹配任何一个单个数字
\D   匹配任何一个非数字
\w   匹配任何数字或字母
\W   匹配任何非数字或字母的字符
\s   任何空白字符  
\S   任何非空白字符
\b   匹配单词边界
\nn 匹配已经保存的子组
\c  逐一匹配特殊字符c ,即取消它的特殊含义,按字面匹配
\A  匹配字符串的起始
\Z  匹配字符串的结束
方法:
match() :从开始找
search():从任意位置找
group() :返回全部对象
groups():返回包含全部子组的元组
findall() :返回一个列表,非重复的
finditer()  :返回迭代器,可重复
split()   :根据正则中的分隔符吧字符串分隔为一个列表,返回此列表,可设置最大分隔次数
sub(正则,新,旧,最大次数)   :把所有符合正则的字符串替换成新的。
subn()     :和sub一样,但是多返回中可包含表示替换次数的数值
例子:
import re
m=re.search('foo','foo')
print m.group()


6线程

守护线程:子线程名称.setDemo(True)
.start()  线程开始执行
.run()   定义线程功能的函数
.join(timeout=None)   程序挂起,直到线程结束;最多阻塞timeout秒
.getName()    返回线程的名字
.setName()     设置线程的名字
.isAlive()     布尔标志,表示这个线程是否还在运行中
.isDaemon()    返回线程的daemon标志
.setDaemon(daemonic)    把线程的daemon标志设为daemonic(一定要在调用start()函数前调用)
例子:
import threading
def music():
    for i in range(100):
        print i
        time.sleep(1)
if __name__ == '__main__':
    t = threading.Thread(target=music)
    t.setDaemon(True)
    t.start()
    time.sleep(3)
    print "all over %s" %ctime()


7运行单独python代码

exec """ 代码组"""
exec ".py"  可以运行python文件对象"   因为运行一次之后光标就在文件最后一行,需要f.seek(0) 光标调回到最初,才能再次运行


8多行代码顺序打包运行

many_code = compile("""
for i in rang(10):
    print "hello"
""","","exec")
exec many_code


9判断属性

if (123)==int:
if isinstance(123,int):


10装饰器

关于装饰器: 如果下面有类的话,第一层接收的是方法本身,第二次自动接收类,返回需要返回 方法本身(类)
def log(func):
    print func.__name__,"1"
    def ww(a):
        print a
        return func(a)
    return ww
@log
def test_zzz(self):
    print "haha"
相关文章
|
6月前
|
缓存 并行计算 PyTorch
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
本文深入探讨了PyTorch中GPU内存管理的核心机制,特别是CUDA缓存分配器的作用与优化策略。文章分析了常见的“CUDA out of memory”问题及其成因,并通过实际案例(如Llama 1B模型训练)展示了内存分配模式。PyTorch的缓存分配器通过内存池化、延迟释放和碎片化优化等技术,显著提升了内存使用效率,减少了系统调用开销。此外,文章还介绍了高级优化方法,包括混合精度训练、梯度检查点技术及自定义内存分配器配置。这些策略有助于开发者在有限硬件资源下实现更高性能的深度学习模型训练与推理。
1092 0
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
472 6
|
分布式计算 安全 算法
Java基础:UUID
作为开发人员大家对UUID应该都比较熟悉了,Java中也提供了相关的类和生成方法,供业务中使用。这里准备对UUID生成的过程做一次深入了解。
458 0
|
3天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
3天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
497 1