python开发面经收集加自己的面经

  • 如何拿到半数面试公司Offer——我的Python求职之路
    • 其中第13点的原理如下:

      子类继承父类后,初始状态下,继承了父类的属性。

      当在子类中修改继承过来的类属性时,并不会修改父类的同名类属性。以后只要是通过子类访问该属性,访问的都是子类的属性;

      通过父类修改了父类属性后,子类访问该属性时,会访问父类修改后的属性值。前提是子类没有对该属性重新赋值过,如果子类修改过该属性,则会遵循上面的规则

    • 第15个求最大公约数是辗转相除法,厉害啦

    • 第16个中位数这个解决方法非常巧妙,它利用了取反数和为1的特性,通过列表负索引来获得列表中位数。

  • =、copy、deepcopy

    • 可以直接参考这篇文章

    • 我们所说的一般意义的“等于号“相当于引用,即原始队列改变,被赋值的队列也会作出相同的改变。

    • copy是浅拷贝,并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

      • Python中的copy动作,对于一个复杂对象的子对象并不会完全复制,什么是复杂对象的子对象呢?就比如序列里的嵌套序列,字典里的嵌套序列等都是复杂对象的子对象。

      • 对于子对象,浅拷贝动作会把它当作一个公共镜像存储起来,所有对他的复制都被当成一个引用,所以说当其中一个引用将镜像改变了之后另一个引用使用镜像的时候镜像已经被改变了。

  • 对于子对象,深拷贝动作会将复杂对象的每一层复制一个单独的个体出来,因而二者完全独立。

    al = [[1], [2], [3]]
    bl = copy.copy(al)
    cl = copy.deepcopy(al)
    d1 = al
    
    print "before=>"
    print al
    print bl
    print cl
    print d1
    
    al[0][0] = 0
    al[1] = [2,3]
    
    print "after=>"
    print al
    print bl
    print cl
    print d1
    
    ####################
    '''
    before=>
    [[1], [2], [3]]
    [[1], [2], [3]]
    [[1], [2], [3]]
    [[1], [2], [3]]
    after=>
    [[0], [2, 3], [3]]
    [[0], [2], [3]]
    [[1], [2], [3]]
    [[0], [2, 3], [3]]
    '''

##########################分割线############################

  • 瓜子二手车
    • 一面跪
    • 一开始就是自我介绍,然后项目经历

    • 感觉编程题部分答的还可以。。问了这么几道:

      • 如何判断一个单链表是否有环

        • 我说用两个指针,一个快指针一个满指针,他问还有别的方法没那我说就只有笨方法了,在数组中存看过的节点的指针,看有没有重复的

      • 知不知道哈希表,哈希表是怎么解决冲突的

        • 冲突怎么解决的忘了

        • 处理散列冲突的方法

          • 开放定址法

            • 线性探测法:就是一旦冲突了就放到下一个位置就好了,只要存储空间够大总会有位置放的(但是这样会产生堆积,因为他可能会把其他的原来属于别人的位置只是暂时空着的给占了)

            • 二次探测法:冲突了就放在1或者2或者3等等的平方后的位置,而不是像前面那样就是单纯的不停地加1,这样就可以不让关键字对集中在一块地方

            • 随机探测法:用一个种子产生一个随机数来作为位移量来避免冲突,然后最后查找这个数在不在的时候也用这个种子生成随机数来找

          • 再散列函数法:准备多个散列函数,这个冲突了就换下一个,总会有一个能解决冲突的

          • 链地址法:把冲突的放在一个单链表中,冲突的就串在一起就好了

          • 公共溢出区法:把冲突的放在另一个数组中,然后以后查找的时候没找到还要在这个数组中顺序查找一遍

      • 给一个ip地址判断其是否是个正确的ip。。可能有点也可能没有

        • 写了一个没有点的,后面一想有点好像也可以加进去

    • 问答题:

      • python的什么什么锁好像是什么r锁

        • 不会

      • 有没有做过并发的东西

        • 没有

      • 知不知道mysql的索引

        • 不知道底层

      • mysql查询起来花的时间多,怎么优化

        • 读到内存里操作呗

      • 数据库的三种设计模式还是设计方法来着

        • 布道

      • 如何判断一个文件有没有被修改过

        • 看修改时间呗,问还有别的吗?不知道

      • tcp协议如何保持稳定

        • 只知道3次握手4次挥手,但是他说他问的不是这个

      • 要是数据库里的数据内存中装不下的话该怎么办

        • 分批次装

  • 陌陌
    • 一面跪
    • 打了个的到望京,SOHU大厦是真的高级
    • 面试的我小哥看着也就二十多岁吧,感觉也是第一次面?看着比我还紧张
    • 先是让我讲一讲一些排序算法,复杂度啊,思想啊,稳不稳定啊之类的
      • 幸好这些我这几天着重准备了
    • 让写了一个归并排序的代码
      • 幸好我会
    • 然后问有没有比快排这些更快的算法,比如要给陌陌1000个员工按照年龄排序该怎么办
      • 我说用字典直接存储,这样就能达到O(n)了
    • 然后继续数据结构,问我堆和二叉树的差别,二叉树指排序树之类的
      • 然后我就把堆讲了一下啊,这个这几天刚看,树就如是的说只刷过题了
    • 然后就问项目先是问编辑距离的原理和实现方法
      • 幸亏老夫牛皮,我还真记得,但是写那个状态转换方程的时候漏了一种情况,不过还行把,面试老哥说我会这个原理很加分
    • 然后问我数据库除了mysql还会什么,会不会什么数据库的优化方法
      • 不会
    • 看我简历上写的项目经历考了我一道文本处理的题
      • 让用正则切分一个句子,句子里像是‘今天太阳【太阳的表情】好大啊,我很开心【开心的表情】’
      • 没怎么用过re的split不太敢用,然后就用最土的split写出来了一个较为复杂的
    • 开放题:问有一个敏感词过滤系统,我们也有一个敏感词库,如何快速的检测一个句子里是否有敏感词
      • 我就说用find呗,然后问有没有更优化的方法,布道
    • 这老哥人还特好,当面就告诉我不行了进不到二面了但是对我的表现进行了一波点评
      • 数据结构和算法上表现的还是不错(没办法你正好问得全是我熟悉的)
      • 但是数据结构的应用场景也应该了解,不能只会算法,不知道什么时候用
      • 编辑距离能解释出来很加分(嘿嘿嘿)
      • 工具不能只会用还得理解其原理,比如mysql的优化啊、正则具体是怎么实现的啊、python中的一些高级的用法比如in是怎么实现的啊
      • 技能树还得再广一点,比如流行的redis、mongodb也得会
    • 总结:至少是一次很有收获的面试,不错。正好还视察了一下望京,哇再说一次SOHO是真的高级
  • 京东方
    • 应该是能进的
    • 这种类似于国企的地方果然面试的套路不一样
    • 过去就是简单的介绍了一下项目,然后就开始扯淡了,问问能不能出差啊,毕业想留在哪啊之类的
    • 总结:月薪1W差点、要出差一次出差半年、做京东方医院、要加班很辛苦,好处就是稳定(?),全国各地都有比如苏州、合肥、武汉、成都什么的。。
    • 感觉可以以后在北京混不下去了再去
    • 说是10月份发offer,到时候再说吧
  • 猿辅导
    • 一面跪
    • 过去先说说项目
    • 怎么在一个模块下使用另一个文件夹下的模块
    • 问了csrf

    • 又问了数据库的调优,然后要是数据太多怎么办,表里按照grade来group,该怎么加速

    • 写了两个sql,两个编程题,都ok

    • 问gil锁。。不会

    • 问了python的解释器什么的,比如用过哪些python解释器(有哪些我都不太懂呢,看来这个底层也要了解了解)

    • 看来主要是用过的东西要知其所以然

  • 图森未来

    • 不知道情况如何啊,电话面试,总共进行了半多小时。可以分为两个部分先是基础知识部分,就是了解个人的技能树,大概问了20分钟吧,然后给了10分钟左右做编程题

      • 上来先自我介绍

        • 我就一波常规操作

      • 然后问对于数据库的了解

        • 我说基础不太懂,但是讲了一下B+树和索引。主要是用的多

        • 然后问使用

          • 事务?

            • 不会

          • left join 、in

            • 这个我会

      • 然后问操作系统

        • 问进程和线程的同步方式

          • 就几个一个信号量了

        • 让说一说CPU调度算法

          • 我说了先进先上和最短的先上、IO密集型的先上之类的

        • 问LRU和LFU

          • 这个我知道啊,内存置换算法

        • 负载均衡?

          • 告辞

        • 分页和分段的区别

          • 我说分页是固定大小的

          • 貌似分段边长?

          • 忘了

      • 然后问计算机网络

        • TCP如何保持传输的可靠性的

          • 哼,我不会在一个坑死两次

          • 什么收到了回复啊、拥塞控制啊、窗口啊一顿吹

        • GET和POST的区别

          • 不太了解

      • 问python的多态怎么实现的。。

        • 布道

        • 就口胡说了装饰器和可变参数、关键字参数

      • 问DDOS知道不?

        • 告辞

      • 说一说自己熟悉的设计模式

        • 告辞

      • 最后做了一道编程题,这个倒还是发挥的不错,面试官说我的思路是对的,最后也做出来了

猜你喜欢

转载自blog.csdn.net/weixin_38104825/article/details/82596405
今日推荐