面试题-Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他

第一章 Python基础
第二章 函数
第三章 模块
第四章 面向对象
第五章 网络和并发编程
第六章 数据库和缓存
第七章 前端
第八章 django
第九章 Flask
第十章 tornado
第十一章 api
第十二章 git
第十三章 爬虫
第十四章 算法和数据结构
第十三章 爬虫
第十五章 Linux
第十六章 设计题
第十七章 客观题
第十八章 其他

第十章 tornado

  1. tornado中的gen.coroutine的作用?

  2. tornado框架中Future对象的作用?

  3. tornado框架中如何编写webSocket程序?

  4. tornado中静态文件是如何处理的?

  5. tornado操作MySQL使用的模块?

  6. tornado操作redis使用的模块?

  7. ni

第十一章 api

  1. 什么是webservice?

  2. 什么是rpc?

  3. 谈谈你对restfull 规范的认识?

  4. 什么是接口的幂等性?

  5. 为什么要使用django rest framework框架?

  6. django rest framework框架中都有那些组件?

  7. 使用django rest framework框架编写视图时都继承过哪些类?

  8. django rest framework框架如何对Queryset进行序列化?

  9. 简述 django rest framework框架的认证流程。

  10. django rest framework如何实现的用户访问频率控制?(匿名用户和注册用户)

第十二章 git

  1. 你在公司如何做的协同开发?

  2. git常见命令。

  3. 简述以下git中stash命令作用以及相关其他命令。

  4. git 中 merge 和 rebase命令 的区别。

  5. 公司如何基于git做的协同开发?

  6. 如何基于git实现代码review?

  7. git如何实现v1.0 、v2.0 等版本的管理?

  8. 什么是gitlab?

  9. github和gitlab的区别?

  10. 如何为github上牛逼的开源项目贡献代码?

  11. git中 .gitignore文件的作用?

第十三章 爬虫

  1. 写出在网络爬取过程中, 遇到防爬问题的解决办法。

  2. 如何提高爬虫的效率?

  3. 你的爬虫 爬取的数据量有多少?

  4. 列举您使用过的python网络爬虫所用到的模块。

  5. 简述 requests模块的作用及基本使用?

  6. 简述 beautifulsoup模块的作用及基本使用?

  7. 简述 seleninu模块的作用及基本使用?

  8. 简述scrapy框架中各组件的工作流程?

  9. 在scrapy框架中如何设置代理(两种方法)?

  10. scrapy框架中如何实现大文件的下载?

  11. scrapy中如何实现限速?

  12. scrapy中如何实现暂定爬虫?

  13. scrapy中如何进行自定制命令?

  14. scrapy中如何实现的记录爬虫的深度?

  15. scrapy中的pipelines工作原理?

  16. scrapy的pipelines如何丢弃一个item对象?

  17. 简述scrapy中爬虫中间件和下载中间件的作用?

  18. scrapy-redis组件的作用?

  19. scrapy-redis组件中如何实现的任务的去重?

  20. scrapy-redis的调度器如何实现任务的深度优先和广度优先?

第十四章 算法和数据结构

  1. 顺序表、链表的区别及应用场景。

  2. 哈希树的构造与应用场景。

  3. B Tree和B+ Tree的区别?

  4. 什么是中序遍历?

  5. 具有三个节点的二叉树有几种形态:

    A.  1
    B.  3
    C.  5
    D.  7
    
  6. 无向图G中的边的集合E=[(a,b), (a,e),(a,c),(b,e),(e,d),(d,f),(f,c)], 则从顶点a出发进行深度优先遍历可以得到一种顶点序列为

    A.  aedfcb
    B.  acfebd
    C.  aebcfd
    D.  aedfbc
    
  7. 一颗具有n个节点的平衡二叉树, 其平局查找长度为

    A.  O(1)
    B.  O(log2n)
    C.  O(n log2n)
    D.  O(n2)
    
  8. 以下序列中不是二叉堆的是

    A.  100,86,48,73,35,39,42,57,66
    B.  12,70,33,65,92,41,40,81,75,99
    C.  103,97,56,38,89,23,45,10,37,52,6
    D.  7,32,10,53,90,27,41,70,61,82
    
  9. 快速排序按排序思想分类属于

    A.  基数排序
    B.  选择排序
    C.  插入排序
    D.  交换排序
    
  10. 奇偶交换排序

如下所述: 
	第一趟对所有奇数i ,将a[i]和a[i+1]进行比较; 
	第二趟对所有偶数i, 将a[i]和a[i+1] 进行比较, 若a[i]>a[i+1], 则两者交换; 
	第三趟对奇数i, 第四趟对偶数i, 以此类推, 直至整个序列有序为止. 若有初始序列为逆序, 规模为7的有序序列, 欲通过奇偶交换排序获得正序序列, 则排序过程中所需的数据交换次数为多少?

A.  6
B.  20
C.  21
D.  28
  1. 对长度为N的线性表进行顺序查找, 在最坏情况下所需要的比较次数为

    A.  N+1
    B.  N
    C.  ( N+1)/2
    D.  N/2
    
  2. 一直青蛙可以跳上一级台阶, 也可以跳上两级台阶, 求该青蛙跳上一个十级台阶共有多少中跳法.

    A.  15
    B.  89
    C.  144
    D.  512
    
  3. 合并两个有序的数组, 数组都是非递减的, 合并后的数组依然有序

    class Solution:
        def merge(self, nums1, m, nums2,n)
            '''
            :type nums1:list[int]
            :type m:int
            :type nums2:list[int]
            :type n1:int
            :rtype nums:list[int]
    
  4. 反转数字, 例子:

    输入123, 输出321; 输入-123, 输出-321; 输入1032100, 输出12301

    class Solution:
        def reversr(self,x)
            '''
            :type x:int
            :rtype :int
            '''
    
  5. 实现一个二分查找

  6. 采用递归的方式用javascrapt写一下快速排序

  7. 一个数组, 找到和为n的所有数对. 如[1,7,3,5,6,2,9,5,4,8] n=11,问 数对(7,4),(2,9),(5,6)…效率尽可能高

  8. 简单描述下快速排序的原理。

  9. 12个大小一样的球, 其中一个的重量与其他的不一样, 如何只称三次找出这只球

  10. Given a string s, find the lonest palindromic substring in s, you may assume that the maximum length of s in 1000;

    Example:
    Input: "babad"
    Output:"bab"
    Note:"aba" is also avalid answewr
    
    Example:
    Input: "cbbd"
    Output:"bb"
    
  11. Divide two integers without using muitiplication, division and mod operator. id it is overflow, return MAX_INT;

    For example, given:["eat", "tea","tan","ate","nat","bat"]
    return :
    [
    ["ate","eat","tea"],
    ["nat","tan"],
    ["bat"]
    ]
    
    Note: All inputs will be in lower-case
    
  12. 括号匹配

    Given a astring containing just the characters’(‘,’)‘,’{‘,’}‘,’[',and ‘]’, determine if the input string is valid.

    The brackets must close in the correct order, “()” and “()[]{()}” are all valid but “(]” and "([)]"are not

  13. 给定一个int list a, 满足a[i+1]>=a[i], 满足a[i+1]>=a[i], 给定int key, 找出list a中第一个大于等于key元素的index, 无满足要求的元素则返回-1

    函数定义:
    
    def findindex(int_list, int_key)
    
  14. 假设在n进制下, 567*456=150216成立, 请问n的值是

    A.  9
    B.  12
    C.  14
    D.  18
    
  15. 给一个链表, 将其中的节点两两交换后, 返回链表的头结点

    实例:
    给出1->2->3->4
    你的程序应该返回这样一个链表: 2->1->4->3
    注意: 不能修改链表的节点的值
    
  16. 给定一个整数数组, 返回两个数字的索引, 使得他们相加和一个目标值相等. 可以假设每个输入都有且只有一个解 例如 数组nums = [2,7,11,15], 目标值是9 因为nums[0]+nums[1]= 2+7=9 所以返回[0,1]

  17. we have a list of number

    l = [1,2,4,8,16,32,64,128,256,512,1024,32768,65536,4294967296]
    
    we want to make a dictionary with the number of digits as the key and list of numbers the value:
    
    {1:[1,2,4,8],2:[16,32,64],3:[128,256,512],4:[1024],5:[32768],10:[4294967296]}
    
```
for a given pair of numbers (row x column), create an array. for example, for (4,5) pair, we want to create the following 4x5 matrix:

[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8],[0,3,6,9,12]]
```
  1. we want to define a function with a generator which can iterate the numbers, which are divisible by 7 within range(n)

  2. 布尔运算

    已知x=43, ch="A",y=1, 则表达式(x>=y and ch<'B' and y)的值是
    
    1.  0
    2.  1
    3.  出错
    4.  True
    
  3. 编程实现斐波那契数列(注:使用递归)

  4. 请用自己的算法, 按升序合并如下两个list, 并去除重复元素

    list1=[2,3,8,4,9,5,6]
    list2=[5,6,10,17,11,2]
    
  5. 现有编号分别为A,B,C,D,E的5个盒子, 某方法每次调用都输出盒子的一个编号, 输出这五个盒子的概率分别是10%, 20%, 25%, 15%, 30%,请实现该方法.

  6. 填充代码

    import random
    
    def get_card(config):
        ...
        ...
    
    card_config = [['card1',10],['card2',30],['card',15]]
    card_name = get_card(card_config )
    print card_name
    
    现需要编写一个抽取卡牌的函数, 按照给定的权重分布来随机抽取, 输入的配置示例为[['card1',10],['card2',30],['card',15]], 其中字符串为卡牌名, 数字为权重, 返回'card1'的概率是10/(10+30+15), 请完成代码中省略的部分
    
  7. 在数组中找到具有最大和的连续子数组(至少包含一个数字)

    例如, 给定数组[-2,1,-3,4,-1,1,1,-5,4]
    
    连续子阵列[4,-1,2,1]具有最大的sum=6
    
  8. 算法是值

    A.  数学的计算公式
    B.  程序设计语言的语句序列
    C.  对问题的精准描述
    D.  解决问题的精准步骤
    
  9. 斐波那契数列

    1,2,3,5,8,13
    
    求出400万以内的最大的斐波那契数, 并求出他是第几个
    
  10. 写代码(数桃子)

    海滩上有一堆桃子, 五只猴子来分,第一只猴子把这堆桃子平均分成了五份, 多了一个, 这只猴子把多的一个扔到了海里, 拿走了一份,第二只猴子把剩下的盒子了一起,有平均分成了五分,又多了一个, 同样把多的一个扔到了海里, 拿走了一份, 第三只,第四只,第五只都是这样做的, 问海滩上原来最少是有多少桃子
    
  11. 写程序

    上机编程实现一个小程序, 给出一个罗马数字,先判断是否是罗马数字, 如果是, 转换为阿拉伯数字,不是的话报错.本题只考虑3999以内的数
    
    I(1) V (5) X(10) L(50) C(100) D(500) M(1000)
    
    计数规则
    
    1.  若干相同数字连写表示的数是这些罗马数字的和,如III=3
    2.  小数字在大数字前面表示的数使用大数字减去小数字, 如IV=4
    3.  小数字在大数字后面表示的数是大数字加上小数字, 如VI=6
    
    组合规则:
    
    1.  基本数字I,X,C中的任何一个, 自身连用构成数目, 或者放在大数的右边连用构成数目, 都不能超过三个;放在大数的左边只能用一个
    2.  不能把基本数字V,L,D中的任何一个作为小数放在大数的左边采用相减的方式构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个
    3.  V和X左边的小数字只能用I
    4.  L和C左边的小数字只能用X
    5.  D和M左边的小数字只能用C
    
  12. 请列举出三种常用的排序算法

  13. 用4,9,2,7四个数字, 用加减乘除, 和每个数字(必须且只能用一次), 使表达式结果为24

  14. 一个数组的中位数定义为: 数组中元素排序后在中间位置的数, 如果数组长度为偶数, 则为中间两个数的平均数.

    请写出两个函数,分别实现:
    
    *   向数组插入新元素
    *   找出插入元素后新数组中的中位数
    
    提示: 插入新元素的方法影响找中位数的复杂度, 我们希望找减少求中位数的复杂度
    
    
    
    
    
    
    
    
    
    
    
    
    
    

你可能感兴趣的:(面试题,python,flask,api,git,tornado,爬虫)