Python面试总结*(duoyiwanluo)

今天联系上了hr,安排上了一场面试。

面试的方式是视频面试,感觉不错。

面试官是二个小伙子吧,感觉像是比较成熟一点的老程序员的样子。

下面说说流程吧,当做总结吧:


面试官:你先自我介绍一下吧。

我:我名字,面试的岗位,毕业学校专业,做过一些什么项目。

面试官:问一下python中什么元素判断为假,

我:这个我不是很明白,乱蒙了一个答案吧,哈哈,第一个我就答不上来。

面试官:接下来,就是问我简历上面的三个项目,哪一个做得最好,更有成就感。

我:我就简单地介绍三个项目,其实类型不同,都挺熟悉的,巴巴拉拉~~说了不少。

面试官:嗯,看这些项目都是前端多一点啊

我:我只是为了人项目更加完整和直观,就连前端也写了。

面试官:那你在写项目的时候,是团队写的吗,还是单人?

我:我是单人写的,学习一些案例,自己独自完成的练手项目。

面试官:那你在写这些项目的时候,有遇到什么难点吗?

我:有点,我在写后台的时候,我写的api接口和debug的时候遇到了一些逻辑上的问题吧。

面试官:那你在写代码的时候,遇到代码中乱码情况,你怎么看?

我:要配置文件查看看和修改,设置utf8这一些什么的。

面试官:你平常浏览哪一些技术的论坛吗?

我:我说了几个。什么csdn,掘金,知乎,国外的我去github什么的看看。

面试官:那你就是看看嘛?

我:我自己也是看技术网站文章,自己也是总结,写一些文章的,方便自己总结的。

面试官:嗯嗯~那你有什么职业规划吗、

我:想了一会,说自己想在这个行业感下去,给自己定了五年左右的规划,

第一年到第二年:我想自己先熟悉自己的开发岗位,胜任自己的岗位。完成好自己的工作。

第三年到第四年,我考虑的是晋级岗位,也就是成为高级一丢丢的程序员的意思。

第五年:我就想做产品经理了,我摊牌了。哈哈~

面试官:呃呃~

面试官:我想问一下,你这些项目的后台是用什么写的,和怎么写的。

我:我用到框架,是里面自带的,不怎么需要些后台。

面试官:喔喔。

我:心想为什么他就不问一下我数据库和操作系统的问题????在线等,急。。

面试官:那你应该了解操作系统吧,大学学过吧。

我:大学写个Linux,用到时redhat比较旧的版本,我就自学了centos,kail,ubanto等等版本的操作系统。

面试官:你平常常用的是操作系统最多是哪一方面,内核还是应用。

我:应用吧,我用的命令行多一点。

面试官:你列出一些常用的命令行吧

我:ls,mkdir,touch,cat,more,rm,cp,mv,ln,tar

面试官:你了解设计模式吗?

我:只是理解一丁点gof。。。这个我是真的看的少

面试官:你平常的一些学习渠道,有哪一些。

我:看看技术网站的文章,b站视频,和看一些电子书。什么leetcook book,廖雪峰的py3,简明python等等、

面试官:你用的是什么py3吧

我:嗯嗯,我现在用的是py3.7

面试官:我看了你的专业,你的同学现在在做一些什么的行业,你学得这么样在你的同学中。

我:我只是学得中上吧,而我的同学从事的行业,java开发和测试多一点。

面试官:你可以说说python的数据类型吗。

我:字符串,列表,元组,字典,集合。

面试官:你可以说说列表和集合的区别吗。

我:列表是可变的对象,而集合是具有唯一性的,不可以。哈哈哈我这个答案,我自己后来想想都想笑死了。

面试官:什么时候用多进程,什么时候用多线程?进程和线程的区别

我:呜呜~留下没有技术的泪水。我诚实地说我我不会,我只知道一个进程可以有多个线程,一个是内存的最小运行单位,一个是cpu最小的运行单位。

面试官:你了解什么是GIL吗?

我:又是一个难点,我平常没有接触到,我也直白地回答:我不会。

面试官:那你了解http协议吗?

我:是文本传输协议吧,有了解的。

面试官:那你了解其中的结构吗?什么报头什么的。

我:真的一下就蒙了,忘记得可以,直白地说了一些,就全部还给老师了。

面试官:你了解网络七层协议?可以说说吗?

我: 应用层▪ 表示层▪ 会话层▪ 传输层▪ 网络层▪ 数据链路层,只是说了几个,这个会话层真的想不起来。

面试官:你可以说说传输层中的协议吗》

我:tcp协议和udp协议;

另一个面试官:我出一道题,你可以做一下,123,三个数字,组合排列出全部种可能,打印出来。你可以用算法或是函数解答,我给你五分钟。

我:想了三分钟,信心满满地回答,我现在做不出来。哈哈

另一个面试官:没事,不要在意。

我:55555555

事后:他想的就是python实现全排列算法:

所谓全排列,就是给定数组,将所有的可能排列组合都枚举出来,n个元素共有n!种排列组合。

举例,对于[‘1’, ‘2’, ‘3’],全排列结果为:123,132,213,231,312,321,共有3!=6种。

很直觉的思路就是从数组中依次挑选一个元素作为第1元素,固定第1元素之后,再将剩下的n-1个元素做全排列。

很显然这是递归的思路,还需要确定跳出条件,这里是只剩下1个元素时,自然就到头了。

根据这个思路,代码如下:

from __future__ import print_function

def perm(elem_list, s=''):
    # 类型检查
    if type(elem_list) != type([]):
        return

    # 参数合法性检查
    if len(elem_list) == 0:
        return

    # 跳出条件
    if len(elem_list) == 1:
        # 打印当前结果
        print(s+elem_list[0])
        return

    # 依次挑选一个元素作为第1元素
    for i,e in enumerate(elem_list):
        # 递归调用自身,同时传入当前的前缀字符串
        perm(elem_list[:i] + elem_list[i+1:], s+e)


# 测试用例
perm(['1', '2', '3'])

上述代码的运行结果如下:

123
132
213
231
312
321

面试官:我们对你的面试了解了不少,回去等通知吧,

我:好的,谢谢、(ps:我知道我算法没有写出来,就知道我凉了)

hr:怎么样,面试还顺利吗?

我:可能得下次再来了,哈哈

hr:没事没事,可能是你面试得少。

我:不知道面试官会问什么问题?答得不够好吧

hr:基础扎实就ok ,下次就会了。

(终)


我:没有心存侥幸要offer了,但是还是得到一些面试经验的,自己也明白不足的地方,好好总结,下次做得更好一点吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值