"

成熟大概就是这么一个过程:只言片语 -> 口若悬河 -> 沉默寡言。


—— 小闫同学

"


春天到了,那颗躁动不安的心又踏上了面试之旅,菜鸟在前方探路,返回一手资料供你参考。​更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.python基础

1.1 dict

问:有这样一个需求,为字典添加一个键,如果已存在则不做任何操作;如果不存在,添加后需要设置默认值。请使用字典自带的一个方法完成此操作。

答:​​setdefault​​ 方法可完成此操作。示例如下:

mydict = {"1":"小闫", "2":"小良"}
mydict.setdefault('1', 'xx')
print(mydict)
# 结果为 {'1': '小闫', '2': '小良'}
mydict.setdefault('3', 'xx')
print(mydict)
# 结果为 {'1': '小闫', '2': '小良', '3': 'xx'}

1.2 str


问:请问字符串的方法 ​​join​​​ 与操作符 ​​+​​ ,哪一个效率高?

答:如果需要拼接大量的字符串,如几万个 ,那么 ​​join​​​ 类型的效率要远高于操作符 ​​+​​;如果仅仅是一两个字符串拼接的话,操作符会更加实用。下面从源码的角度去解析一下原因:更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

字符串底层是由 ​​C​​​ 语言中 ​​PyStringObject​​​ 对象所实现,此对象不可变,这就导致了如果要使用操作符 ​​+​​​ ,就需要不断的重新申请地址空间去存放拼接后的字符串,在数量庞大的基础上,效率可想而知多么低。​​join​​​ 就不一样了,它是对列表等可迭代对象进行操作,因为操作对象是可变的,因此只需申请一次内存即可。所以结论就是 ​​join​​ 类型效率要高的多。

2.Git

1.1 分支

1.查看当前所属分支

git branch

2.删除分支

# 删除本地分支
git branch -d [分支名称]
# 删除远程分支
git push origin --delete [分支名称]

3.MVT


问:谈一谈你对 ​​MVT​​ 模式的了解?

答:首先介绍一下这三个字母所代表的的内容,​​M​​​ 是 ​​Model​​​ 代表模型类,与数据库进行交互;​​V​​​ 是 ​​View​​​ 代表视图,是对请求进行处理并与数据库模板等进行交互;​​T​​​ 是 ​​Template​​ 代表模板,是负责填充数据产生前端页面。其大体​流程​为:客户端发起一个请求,视图接收后,根据内容进行处理,过程中如果涉及到数据库,会进行查询保存等操作并将结果返回给视图,然后模板进行填充并返回给视图一个 ​​html​​ 页面,最后视图将页面返回给客户端进行渲染展示。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』


新鲜出炉面试题(一)_操作符