Skip to content

Latest commit

 

History

History
221 lines (133 loc) · 5.76 KB

python-interview-2019-1.md

File metadata and controls

221 lines (133 loc) · 5.76 KB

Python开发工程师笔试题1

答题要求:将该项目从地址1地址2fork到自己的GitHubGitee仓库并在线填写答案,完成后以发送合并请求(Pull Request)的方式提交自己的工作成果,时间120分钟。

答题人:

题目:

  1. 下面的Python代码会输出什么。

    print([(x, y) for x, y in zip('abcd', (1, 2, 3, 4, 5))])
    print({x: f'item{x ** 2}' for x in range(5) if x % 2})
    print(len({x for x in 'hello world' if x not in 'abcdefg'}))

    答案:

    
    
  2. 下面的Python代码会输出什么。

    from functools import reduce
    
    items = [11, 12, 13, 14] 
    print(reduce(int.__mul__, map(lambda x: x // 2, filter(lambda x: x ** 2 > 150, items))))

    答案:

    
    
  3. 有一个通过网络获取数据的Python函数(可能会因为网络或其他原因出现异常),写一个装饰器让这个函数在出现异常时可以重新执行,但尝试重新执行的次数不得超过指定的最大次数。

    答案:

  4. 下面的字典中保存了某些公司今日的股票代码及价格,用一句Python代码从中找出价格最高的股票对应的股票代码,用一句Python代码创建股票价格大于100的股票组成的新字典。

    说明:美股的股票代码是指英文字母代码,如:AAPL、GOOG。

    prices = {
        'AAPL': 191.88,
        'GOOG': 1186.96,
        'IBM': 149.24,
        'ORCL': 48.44,
        'ACN': 166.89,
        'FB': 208.09,
        'SYMC': 21.29
    }

    答案:

  5. 写一个函数,传入的参数是一个列表,如果列表中的三个元素abc相加之和为0,就将这个三个元素组成一个三元组,最后该函数返回一个包含了所有这样的三元组的列表。例如:

    参数:[-1, 0, 1, 2, -1, -4]

    返回:[(-1, 0, 1), (-1, 2, -1)]

    答案:

  6. 写一个函数,传入的参数是一个列表(列表中的元素可能也是一个列表),返回该列表最大的嵌套深度,例如:

    参数:[1, 2, 3]

    返回:1

    参数:[[1], [2, [3]]]

    返回:3

    答案:

  7. 写一个函数,实现将输入的长链接转换成短链接的功能(类似于新浪微博那样),每个长链接对应的短链接必须是不同且唯一的。例如:给出一个长链接http://jackfrued.top/api/users/10001?a=b&c=d,会返回对应的短链接http://t.cn/E6MUth1

    答案:

  8. 用5个线程,将1~100的整数累加到一个初始值为0的变量上,每次累加时将线程ID和本次累加后的结果打印出来。

    答案:

  9. 请阐述Python是如何进行内存管理的。

    答案:

    
    
  10. 在MySQL数据库中有名为tb_result的表如下所示,请写出能查询出如下所示结果的SQL。

tb_result表:

rq shengfu
2017-04-09
2017-04-09
2017-04-09
2017-04-09
2017-04-10
2017-04-10
2017-04-10

查询结果:

rq
2017-04-09 2 2
2017-04-10 1 2

答案:

  1. 列举出你知道的HTTP请求头选项并说明其作用。

    答案:

    
    
  2. 阐述Web应用中的Cookie和Session到底有什么区别和联系。

    答案:

    
    
  3. 请阐述访问一个用Django或Flask开发的Web应用,从用户在浏览器中输入网址回车到浏览器收到Web页面的整个过程中,到底发生了哪些事情,越详细越好。

    答案:

    
    
  4. 请阐述HTTPS的工作原理,并说明该协议与HTTP之间的区别。

    答案:

    
    
  5. 简述你认为新浪微博是如何让订阅者在第一时间获得博主发布的消息。

    答案:

    
    
  6. 简述如何检查数据库是不是系统的性能瓶颈以及你在工作中是如何优化数据库操作性能的。

    答案:

    
    
  7. 在Linux系统中,假设Nginx的访问日志位于/var/log/nginx/access.log,该文件的每一行代表一条访问记录,每一行都由若干列(以制表键分隔)构成,其中第1列记录了访问者的IP地址,如下所示。请用一条命令找出最近的100000次访问中,访问频率最高的IP地址及访问次数。

    221.228.143.52 - - [23/May/2019:08:57:42 +0800] ""GET /about.html HTTP/1.1"" 206 719996
    218.79.251.215 - - [23/May/2019:08:57:44 +0800] ""GET /index.html HTTP/1.1"" 206 2350253
    220.178.150.3 - - [23/May/2019:08:57:45 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    218.79.251.215 - - [23/May/2019:08:57:52 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    219.140.190.130 - - [23/May/2019:08:57:59 +0800] ""GET /index.html HTTP/1.1"" 200 2350253
    221.228.143.52 - - [23/May/2019:08:58:08 +0800] ""GET /about.html HTTP/1.1"" 206 719996
    221.228.143.52 - - [23/May/2019:08:58:08 +0800] ""GET /news.html HTTP/1.1"" 206 713242
    221.228.143.52 - - [23/May/2019:08:58:09 +0800] ""GET /products.html HTTP/1.1"" 206 1200250
    

    答案:

  8. 请阐述跨站脚本攻击(XSS)、跨站身份伪造(CSRF)和SQL注射攻击的原理及防范措施。

    答案: