精华内容
下载资源
问答
  • python常见算法面试题

    2020-07-06 11:25:26
    涉及到了闭包延时绑定,当循环执行完了之后才会执行传参,循环四次,每一次循环完 i=3 然后再和x相乘 所以结果是6,6,6,6。 如果把 [ lambda x: ix for i in range(4) ] 改成 ( lambda x: ix for

    为什么输出6,6,6,6

    def num():
        return [lambda x: i*x for i in range(4)]   # 这里使用的是lambda函数 
    print([m(2) for m in num()])     # 输出: [6, 6, 6, 6]
    

    思路

    这题涉及到了闭包延时绑定,当循环执行完了之后才会执行传参,循环四次,每一次循环完 i=3 然后再和x相乘 所以结果是6,6,6,6。 如果把 [ lambda x: ix for i in range(4) ] 改成 ( lambda x: ix for i in range(4) )这样就变成了一个生成器 自动实现迭代器协议,一边循环一边计算的机制, 这样结果就是 0,2,4,6.

    两数之和

    给定 nums = [2, 7, 11, 15], target = 9
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

    思路:

    这里可以使用字典来解题,通过enumerate方法遍历获取数据的下标包括对应值,然后以key,value形式把该数据的下标和对应值存入字典,然后再出通过enumerate方法遍历数据,每一次获取数据就从字典拿出一个值,用目标值减去从字典拿出的这个值得到一个结果值,如果结果值存在字典当中,那么返回两个数的下标,如果为None,说明字典中没有这个值。

    def get_index_list(nums, target):
    
        # Todo 作为一个方法来实现,批量解决这个获取索引的问题
        """
        :params nums:传的参数的列表
        :params target: 目标值
        :return: 返回索引
        """
    
        dic = {}
    
        for a, b in enumerate(nums):  # a是下标 b是对应值
    
            dic[b] = a  # 对应值存入字典
    
        for i, b in enumerate(nums):
    
            j = dic.get(target-b)  # 从字典中拿出对应值 用目标值减去对应值
    
            if j is not None:  # 判断如果减去的对应值不为空,则返回下标
    
                return [i, j]
    if __name__ == "__main__":
        print(get_index_list([2, 7, 11, 15],9))
    

    数组中重复的数字

    示例:

    输入:
    [2,3,1,0,2,5,3]
    输出: 23
    

    思路:

    这道题想到的是,使用列表中的count方法,定义一个空列表,遍历数据然后进行判断,如果数据值出现个数大于或等于2,说明该数据是重复的,然后把重复的筛取出来之后存入空列表,再进行返回输出。

    实现代码:

    def get_number(nums):
        """
        :params nums:传的参数的数组
        :return: 返回重复数字
        """
        nub = []
    
        for i in nums:
            if nums.count(i) >= 2:
                if str(i) not in nub:
                    nub.append(str(i))
    
        print('或'.join(nub))
    
    
    if __name__ == "__main__":
        get_number([2, 3, 1, 0, 2, 5, 3])
    

    队列实现一个栈

    思路:

    使用一个队列,实现栈的一些基本操作,栈(后进先出)的特性。

    实现代码:

    # 队列实现一个栈 (栈:后进先出)
    class Stack(object):
    
        def __init__(self):
            # 定义一个队列
            self.lst = []
    
        def is_None(self):
            # 判断栈是否为空 返回 ture false
            return self.lst == []
    
        def push(self, i):
            # 加入元素
            self.lst.append(i)
    
        def pop(self):
            # 出栈
            return self.lst.pop()
    
        def stack_top(self):
            # 返回栈顶元素
            return self.lst[-1]
    
        def size(self):
            # 栈的大小
            return len(self.lst)
    
    
    if __name__ == "__main__":
    
        stack = Stack()
        print(stack.is_None())
        stack.push(1)
        stack.push(2)
        stack.push(3)
        print(stack.lst)
        print(stack.pop())
        print(stack.stack_top())
        print(stack.size())
    
    

    回文数

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    示例1:

    输入: 121
    输出: true
    

    示例2:

    输入: -121
    输出: false
    解释: 从左向右,为 -121 。 从右向左读,为121- 。 因此它不是一个回文数
    

    示例3:

    输入: 10
    输出: false
    解释: 从右向左读,为 01 。 因此它不是一个回文数
    

    思路:

    这题可以使用字符串 双指针的方法 将数据转化为字符串 首先定义好第一个元素下标和最后一个元素下标,while循环 只要条件不满足 一直循环 循环判断第一个和最后一个元素是否相等 不相等返回false 相等继续循环,如果循环条件满足之后都相等,返回 false

    实现代码:

    def palindromic_number(x):
    
        """
        :params x:传的参数的列表
        :return: 返回Ture False
        """
    
        lst = list(str(x))
        print(lst)
        L, R = 0, len(lst)-1
    
        while L <= R:
            print(L, R)
            if lst[L] != lst[R]:
                return False
    
            L += 1
            R -= 1
        return True
    
    
    if __name__ == "__main__":
        print(palindromic_number(1231))
    

    分别用生成器和迭代器生成斐波那契数列

    示例:

    输出: 1 1 2 3 5 8 13
    
    # 使用迭代器生成斐波那契数列
    class Fibonacii(object):
        def __init__(self,all_num):
            self.all_num = all_num
            self.cur_idx = 0
            self.a = 0  
            self.b = 1
        
        def __iter__(self):
            return self
        
        def __next__(self):
            if self.cur_idx >= self.all_num:
                raise StopIteration
            ret = self.a
            
            self.a, self.b = self.b, self.a + self.b
            self.cur_idx += 1
            return ret
     
    fibo = Fibonacii(10)
    for i in fibo:
        print(i)
    
    # 使用生成器生成斐波那契数列
    def fibnacii(count):
        num = 0
        a, b = 0, 1
        while num < count:
            yield a
            a, b = b, a+b
            num += 1
    
    
    fi = fibnacii(10)
    for i in fi:
        print(i)
    

    反转字符数组

    思路:

    直接使用反转

    实现代码:

    # 反转字符串
    def reverseString(s):
        s[0::] = s[::-1]
        print(s)
    
    
    if __name__ == "__main__":
        reverseString(['b', '', 'a', 'r'])
    
    

    字符串反转

    a="Let's take LeetCode contest"
    def b():
        return ' '.join(a.split(' ')[::-1])[::-1]
    if __name__ == '__main__':
        print(b())
    

    def a():
        slit=[]
        s=100
        for c in range(0,10):
            if c==0:
                slit.append(s)
            else:
                slit.append(s*2)
            s=s/2
        print(sum(slit))
        print(s)
    if __name__ == '__main__':
        a()
    

    冒泡排序

    #定义一个函数传入个变量
    def bubble_sort(li):
        for i in range(len(li)-1):
            for j in range(len(li)-i-1):
                if li[j] > li[j+1]:
                    li[j],li[j+1]=li[j+1],li[j]
    
    li = [1,5,2,6,3,7,4,8,9,0]
    bubble_sort(li)
    print(li)
    
    展开全文
  • 八九月份就要开始找工作了,一直期待能够成为一名算法工程师,所以在这里总结一下算法工程师常见问题。期待9月秋招时能有一个好的结果。本篇博客会一直更新下去。C++、python剑指offer+Leetcode基本就能解决1) 过...

    八九月份就要开始找工作了,一直期待能够成为一名算法工程师,所以在这里总结一下算法工程师常见问题。期待9月秋招时能有一个好的结果。本篇博客会一直更新下去。

    2163ad51db7a

    C++、python

    剑指offer+Leetcode基本就能解决

    1)  过拟合问题

    2)  交叉验证问题

    3)  模型融合问题

    4)  模型选择问题

    1)  几种模型( SVM,LR,GBDT,EM )的原理以及公式推导;

    2)  RF,GBDT 的区别; GBDT,XgBoost的区别(烂大街的问题最好从底层原理去分析回答);

    3)  决策树处理连续值的方法;

    4)  特征选择的方法;

    5)  过拟合的解决方法;

    6)  K-means 的原理,优缺点以及改进;

    7)  常见分类模型( SVM ,决策树,贝叶斯等)的优缺点,适用场景以及如何选型;

    8)  SVM 为啥要引入拉格朗日的优化方法;

    9)  假设面试官什么都不懂,详细解释 CNN 的原理;

    10) 梯度下降的优缺点

    11) EM与K-means的关系;

    12) L1与L2的作用,区别以及如何解决L1求导困难;

    13) 如何用尽可能少的样本训练模型同时又保证模型的性能;

    14) ID3和C4.5的优缺点,树的融合(RF和GBDT)

    15) 特征提取方法,如何判断特征是否重要

    16) BP神经网络以及推导

    17) HMM模型状态推导

    18) 过拟合原因以及解决办法(深度学习同)

    19) 常见损失函数

    20)机器学习性能评价,准确率,召回率,ROC

    22)降采样,PCA,LDA

    1)四种激活函数区别和作用

    2)过拟合解决方法

    3)(CNN)卷及神经网络各层作用

    4)(RNN)循环神经网络

    5)LSTM

    6)梯度弥散

    7)优化算法 adam,SGD等

    8)分析Alexnet,VGG的网络结构以及各层作用

    9)XgBoost(好像很多公司也面到了)

    10)梯度下降的优化

    12)卷积核参数计算

    13)TensorFlow中的session是什么,session和interactivesession的区别

    ---------------------本文来自 gzj_1101 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/gzj_1101/article/details/79514902?utm_source=copy

    展开全文
  • leetcode 347 python Python Algorithm 按专题进行总结的常见算法面试题(LeetCode 为主),基于 Python 实现。 动态规划 数组 字符串 栈 链表 树 图 堆 设计 二进制
  • 1、MySQL数据库总结MySQL可以建多少个数据库,理论上是没有限制的,每一个...2、Python话题1.最受欢迎的Python开源框架1:Django2:Twisted3:Tornado除了以上三种常用的开源框架外还有:Diesel、Flask、Cubes、K...

    1

    MySQL

    数据库总结

    MySQL

    可以建多少个数据库,理论上是没有限制的,每一个数据库可以有上亿的对象,但

    是一般基于硬件要求、效率问题一般不超过

    64

    个,

    超过

    64

    个会对数据处理速度造成影响,每一张表建议不超过过

    1

    亿条数据。

    2

    Python

    话题

    1.

    最受欢迎的

    Python

    开源框架

    1

    Django

    2

    Twisted

    3

    Tornado

    除了以上三种常用的

    开源框架外

    还有

    Diesel

    Flask

    Cubes

    Kartograph

    Pulsar

    Web2py

    Falcon

    DPark

    Buildbot

    Zerorpc

    Bottle

    webpy

    Scrapy

    3

    python

    常用的

    web

    框架

    1

    Django

    2

    Tornado

    3

    Bottle

    4

    web.py 5

    web2py

    6

    Quixote

    (豆瓣网就是基于该框架开发的)

    4

    python

    几种流行框架的比较

    https://zhidao.baidu.com/question/1047367767941211939.html

    国内著名网基于

    Python

    开发的

    豆瓣、知乎、美团、咕咚网、快玩游戏。

    5

    Python

    常用的内置模块

    multiprocessing (

    多进程模块

    ) Queue

    (多线程编程)

    os (

    用于获取环境变量、路径,判断文

    件等

    )

    functools

    (包含一些常用的函数)

    collection

    (集合、常用数据结构算法)

    re

    (正则匹配,字符的查询替换等操作)

    6

    python

    re

    模块的

    match

    ()和

    search

    ()函数的区别

    re

    模块中

    match

    pattern

    string

    [flags]

    ,检查

    string

    的开头是否与

    patter

    匹配

    re

    模块中

    search(pattern,string,[flags]),

    string

    搜索

    pattern

    的第一个配置值

    7

    python2

    python3

    的区别

    Python2

    中使用

    ASCII

    码作为默认编码方式导致

    string

    有两种类型

    str

    unicode

    Python3

    只支持

    unicode

    string

    Python2

    中采用相对路径的

    import

    Python3

    采用的是绝对路径的方式进行

    import

    python3

    的缩进更加的严格

    python3

    采用的是

    print

    函数

    exec

    函数

    python2

    采用的是

    print

    语句和

    exec

    语句

    展开全文
  • )的朋友可能知道,我来上海一个多星期,面试了大概十几家公司,收到了一些 offer,其实截止到昨天下午我依然还是在面试的路上。我是自学 Python,因为之前不知道自己未来要从事什么样的岗位,所以学的时候爬虫和后端...

    写在之前

    这是首发在我公众号 “Python空间” 的第 2 篇文章。

    如果看过我第一篇文章(三个月自学拿到 python 开发 offer!)的朋友可能知道,我来上海一个多星期,面试了大概十几家公司,收到了一些 offer,其实截止到昨天下午我依然还是在面试的路上。我是自学 Python,因为之前不知道自己未来要从事什么样的岗位,所以学的时候爬虫和后端的知识都有涉及,所以自己投的公司的范围也比较广,所以接下来我写的东西也可能比较多,可以选自己的方向去看。

    面试范围

    这么多家公司的面试取个并集的话,基本上所有能问的大类都问了,诸如 Python 基础,web框架,爬虫,数据库,计算机网络,操作系统,数据结构与算法等。下面我就开始详细说一下各个分类我被问到的面试题,我争取尽量的多记起一些来。

    面试题

    Python基础

    1.说一说你所知道的 Python 数据结构有哪些。

    2.Python 中列表和元组的区别是什么?元组是不是真的不可变?

    3.什么是生成器和迭代器?它们之间有什么区别?

    4.什么是闭包?装饰器又是什么?装饰器有什么作用?你用过装饰器吗?请写一个装饰器的例子。

    5.说一下什么是匿名函数,用匿名函数有什么好处?

    6.在学习 Python 的过程中,你有想过如何提高 Python 的运行效率吗?

    7.用过类吗?知道继承吗?请写一个例子,用到继承。

    8.说一下深拷贝和浅拷贝。

    还有一些记不太清了,感觉都不是很难,就是正常如果看过任意一本 Python 入门书的都可以回答出来。

    Web 框架

    1.什么是 Django? 说说你的理解。

    2.Django 遵循什么样的设计模式?每个字母代表什么意思?各自完成什么样的功能?它和MVC是怎么对应的?

    3.Django 中的缓存是怎么用的?

    4.用 Django 做过什么项目吗?大概是怎么样的思路?现在让你写个登陆页面,你要怎么写?

    5.说一下 session 和 cookie 区别。为什么 cookie 是不安全的?

    6.你在用 Django 做项目的时候碰到过什么问题吗?你印象最深的是哪个? 你是怎么解决的?

    怎么说呢,Django 这部分在面试的时候问的更多的是一些项目方面的问题,具体的细节和应用其实很少,顶多就是几个常见的问题。所以建议投这方面工作的朋友手里要有项目,这样心里不慌。

    爬虫

    1.说一下你写爬虫的时候用到过的包。

    2.会用正则表达式吗?会的话请用正则表达式写一下邮箱的地址。

    3.说一下 Python 爬虫的框架,你用过哪个?做过什么样的爬虫吗?

    4.你在写爬虫的过程中遇到过什么问题?印象最深的是哪个?你是如何解决的?

    5.什么是反爬虫?说一下你知道的反爬虫,各自是什么特点,该如何解决?

    6.什么是 Ajax?(因为我的项目上有写这个,所以问了)

    爬虫这部分同样也是问了较多简历上所写项目的实现以及一些细节,所以投爬虫的时候也要提前写点项目,如果用框架更好,如果不会的话,起码也得知道有什么框架,大概是干什么的。

    数据库

    1.用过数据库吗?说一下你熟悉的数据库,这个数据库有什么特点。

    2.什么是索引?什么字段适合建立索引?索引的优缺点你知道吗?

    3.什么是事务?

    4.知道范式吗?说一说数据库的第三范式(如果你看到这里的话,建议你将第一,二范式也都看看)

    5.会写 SQL 语句吗?如何给表中插入数据?如何更新数据?(看到这,你是不是数据库的增删改查都得看看)

    数据库这些东西我感觉问的并不多,大多数公司问我的都是第 1 个和第 5 个问题,其中有一个公司某个面试官说要看看我的基础,然后就多问了几个,然后...幸亏我才看了。

    计算机网络

    1.说一说什么是 TCP/IP 协议?

    2.知道什么是三次握手和四次挥手吗?简单描述一下。

    3. Post 和 Get 有什么区别?

    4.知道滑动窗口吗?

    5. TCP 和 UDP 有什么区别?

    6.知道 Socket 网络编程吗?知道怎么用吗?

    好像还有几个来着,我忘记了。怎么说呢,网络这个地方大概是我的弱项,做为一个当年差点在网络上挂了的菜鸡,大概只回答了一半的题,剩下的一半就是持续蒙圈。

    操作系统

    1.什么是死锁?如何预防死锁?

    2.学过编译原理吗?会用吗?

    3.说一下什么是虚拟内存技术。

    4.用过 Linux 吗?会用吗?在上面搭过环境吗?说一下常用的指令。

    操作系统这个大多数问的是用过 Linux 没,会不会常用的操作指令?我的回答是 No。因为直接从 Windows 到了 Mac,可以说是相当 sad 了。

    数据结构和算法

    1.说一说你所知道的排序算法,它们的时间复杂度和空间复杂度分别是多少?

    2.手写一下冒泡排序和快速排序。

    3.在纸上实现用两个队列模拟栈的操作(所以看到这里你是不是应该也去看看如何用两个栈模拟队列)。

    4.知道什么是动态规划吗?

    5.手写一下将二叉树转化成双向链表。

    6.手写一下将两个有序链表合并成一个有序链表。

    7.手写一下二叉树的层次遍历。

    8.手写如何判断一棵二叉树是否为另一棵二叉树的子树。

    还有几个题就很难了,涉及到了容斥原理和博弈论的内容就不在这说了。数据结构和算法一直是面试的一个老大难问题,其实大多数公司问的比较基础,我面试了这么多公司,唯一的一次笔试就是七道算法题,两个小时。基本上的都是 1,2,6 的那种简单难度,看看书就会了,因为我之前在大学是做算法竞赛的,所以觉得这部分还可以。

    写在最后

    不知不觉写了这么多,这是我面试的总问题的百分之七八十。这些面试的问题大多数都是基础,其实如果你在网上看过别人写的面经你就会发现,有些其实都是重合的,意思就是如果你在去面试之前有针对的看过这些东西,其实到真正面试的时候会舒服很多。

    面试之前看看职位的要求,然后做有针对的学习,往往会收获意想不到的惊喜。我每次去面试之前,都会准备一些时间,然后把可能会问到的问题存到自己的云笔记里面,这样坐地铁,做公交的时候可以抽时间看一眼。

    其实说到最后还是回到一个好好准备上面,祝愿所有努力的人都获得满意的 offer,如果你觉得写的还可以,点个赞呦。

    展开全文
  • # 1.写一个简单的递归 def digui(n): """ 打印1111,2222 是为了使读者看的更清楚 去 回 的两个过程区分 """ if n > 0: print(n, "1111111") digui(n - 1) ...digui(5)
  • 本篇记录并总结下我面试遇到的各种python题目以及相关的知识点,分5大类进行分享:基础问题类、算法问题类、自动化相关题目类、持续集成相关题目类、数据库相关题目类。有写的不对的地方欢迎各位大佬指出,小伙伴们...
  • 广告关闭腾讯云11.11云... python接口面试题小贴士面试呢,运气也是一方面,这个我们把我不住。 但是我们能把握住的是,知识的储备和积累,还有一个重点就是一定要自信,不管你是对是错,自信满满的去向别人述说,成...
  • Python-常见面试题

    2020-03-10 23:35:20
    Python让困难的事变的容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节 Python用途非常广泛–网络应用,自动化,科学建模,大数据应用等等,它也常被用作“胶水语言”,...
  • 自己总结下python常见面试题,这里没写答案,方便多次回顾。 基础知识 深拷贝和浅拷贝的区别 List和Tuple的区别 解释python中的三元运算符 python是如何管理内存的 解释Python中的help()和dir()函数 当退出...
  • 在这里续上一篇文章分享后,继续分享一小波关于Python的案例练习题、面试题、自动化测试等类型的资源。 毕竟,我觉得,知识资源就是要让其发挥出其本应具有的价值,这才叫完全利用。 1、用代码输出斐波那契数列。 ...
  • python常见面试题

    2018-07-09 14:19:01
    1. 到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做)。 下面是一些关键点: Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还...
  • 吾八哥本人之前有幸能接到百度北京总部的人工智能测试开发岗位的面试机会,在二面的过程中,面试官出了一道算法题,题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法。...
  • python相关面试常见的一道经典 list_a = [2,3,5,4,9,6] 不许用sort ,实现从小到大排序,输出 [2,3,4,5,6,9] 如果不用sort排序,简单实现就用冒泡算法来实现。 list_a = [2,3,5,4,9,6] def maopao(list): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,538
精华内容 4,215
关键字:

python常见算法面试题

python 订阅