近期忙于找一个暑期实习的公司,无奈个人水平实在太水,合适的公司也不是很多,笔试题目也积累了一些,整理一下好了。

公司 A

题目一:编写一个脚本main.py,使用方式如下:

main.py -u http://www.sohu.com -d 'a=1,b=2,c=3' -o /tmp/index.html

功能要求:打开-u指定的页面,将页面中所有的链接后面增加参数a=1&b=2&c=3(需要考虑链接中已经存在指定的参数的问题), 然后保存到-o指定的文件中。

题目二:编写一个 ab(Apache Benchmark)的替代程序,请尽可能的兼容 ab 你所认为重要的功能和参数。

题目三:

有配置文件有类似下面的配置:

编写一个脚本,要求如下:

1. 读取配置文件,对每一个url进行检查.

例如http://m.sohu.com/c/5/, 这个url返回的结果应该包含"财经"两个字,并且HTTP状态码是200, 否则报错。

2. 需支持并行的检查多个链接

Solutions:

我选做的是第一题和第三题。

第一题不难,主要解决的是打开某个url并遍历其中的所有链接,以前写爬虫的时候搞过这些东西就比较简单了,同时也涉及到了基本的I/O操作,考的还是比较基本的吧。比较生疏的是命令行参数问题,平时用的比较多但是自己貌似没实现过,趁这个机会也看了一下有关的问题,不过鉴于问题比较简单我就用了getopt解决了,其实有可以实现更加复杂的命令行参数的方法的。

有关的连接可以看一下这里: http://blog.csdn.net/jiang1013nan/article/details/5854378

代码如下:

1 #_*_ coding: utf-8 _*_

2 '''

3 题目一:编写一个脚本main.py,使用方式如下:4 main.py -u http://www.sohu.com -d 'a=1,b=2,c=3' -o /tmp/index.html5 功能要求:打开-u指定的页面,将页面中所有的链接后面增加参数a=1&b=2&c=36 (需要考虑链接中已经存在指定的参数的问题), 然后保存到-o指定的文件中。7 '''

8 importurllib29 importre10 importsys,getopt11 opts, args = getopt.getopt(sys.argv[1:],'hu:d:o:')12

13 defTryurlopen(url,d,o):14 d =getd(d)15 patterns = re.compile('')16 f =urllib2.urlopen(url)17 contents =f.read()18 m =re.findall(patterns, contents)19 file = open(o,'w')20 for ele inm:21 #print ele

22 if '&' in ele or '?' in ele: #url后面有参数

23 ele += '&' +d24 elif ele[-1:] == '/':25 ele +=d26 else:27 ele += '/' +d28 file.writelines(ele + '\n')29 file.close()30

31 defgetd(d):32 changeresult = ''

33 dtest = d.split(',')34 for dele indtest:35 changeresult += dele + '&'

36 changeresult = changeresult[:-1]37 returnchangeresult38

39 def main(argv):#利用getop模块实现基本的命令行参数处理

40 url = ''

41 d = ''

42 orietion = ''

43 for op, value inopts:44 if op =='-u':45 url =value46 elif op == '-d':47 d =value48 elif op == '-o':49 orietion =value50

51 Tryurlopen(url,d,orietion)52

53 if __name__ == '__main__':54 main(sys.argv)55

56

第二题时间原因我没有做,只是大体的了解了一下,有兴趣的同学可以参考一下的链接:

http://blog.csdn.net/jhonguy/article/details/7576155

第三题考察的有基本的I\O操作,对获得的URL内容的处理,返回的HTTP状态码可以分析header解决,以及用多线程读取同一文件,涉及到了锁与同步的问题,也没有特别偏的东西吧,看来公司都是比较注重基础知识的,唉自己基础这么不扎实怎么办,还要继续努力呀。

代码如下:

1 #_*_ coding: utf-8 _*_

2 '''

3 题目三:4 有配置文件有类似下面的配置:5 http://m.sohu.com/c/5/|财经|2006 http://m.sohu.com/|体育|2007 http://m.sohu.com/n/346620805/|信号|2008

9 编写一个脚本,要求如下:10 1. 读取配置文件,对每一个url进行检查.11 例如http://m.sohu.com/c/5/, 这个url返回的结果应该包含"财经"两个字,并且HTTP状态码是200, 否则报错。12 2. 需支持并行的检查多个链接13

14 '''

15 importre16 importurllib217 importthreading18 from os.path importgetsize19 importos,time20 rlock = threading.RLock() #锁

21 curPosition = 0 #当前读取到的文件位置

22 '''设计检查url的函数(完成)'''

23 defTestUrl(line):24

25 m = line.split('|')26 url =m[0]27 tag = m[1]28 #print tag

29 f =urllib2.urlopen(url)30 statuscode =f.getcode()31 contents =f.read()32 if tag in contents and statuscode == 200:33 print 'The url %s is true' %url34 else:35 print 'The url %s is wrong.' %url36

37

38 '''设计支持并行连接的程序'''

39

40 classResource(object):41 def __init__(self, fileName):42 self.fileName =fileName43 #分块大小

44 self.blockSize = 1000

45 self.getFileSize()46 #计算文件大小

47 def getFileSize(self): #获取文件有多少行,即多少个url

48 fstream = open(self.fileName,'r')49 fstream.seek(0,os.SEEK_END)50 self.fileSize =fstream.tell()51 fstream.close()52

53 classReader(threading.Thread):54 def __init__(self, res):55 self.res =res56 super(Reader,self).__init__()57 defrun(self):58 globalcurPosition59 fstream = open(self.res.fileName, 'r')60 whileTrue:61 #锁定共享资源

62 rlock.acquire()63 startPosition =curPosition64 if (startPosition + self.res.blockSize) <65 curposition="endPosition" else:67>

69 rlock.release()70 if startPosition ==self.res.fileSize:71 break

72 elif startPosition !=0:73 fstream.seek(startPosition)74 fstream.readline()75 pos =fstream.tell()76

77 while pos <78 line="fstream.readline()79">

80 TestUrl(line)81 pos =fstream.tell()82 fstream.close()83

84

85

86 if __name__ == '__main__':87 starttime =time.clock()88 #线程数

89 threadNum = 4

90 #文件

91 fileName = '/Users/gixiaochen/Documents/config.log'

92 res =Resource(fileName)93 #线程池

94 threads =[]95 #初始化线程

96 for i inrange(threadNum):97 rdr =Reader(res)98 threads.append(rdr)99 #开始线程

100 for i inrange(threadNum):101 threads[i].start()102 #线程结束

103 for i inrange(threadNum):104 threads[i].join()

找实习的一点感受:

1. 扎实的基础知识+某一方面的特长才能有好的offer

2. 不管找不找得到,准备工作的同学都应该尽力去找,感觉找实习的时候自己提高的很多,多投几个公司多笔试面试几次,就会发现很多自己觉得不重要的东西还是很有必要牢牢掌握的,以前偷懒丢下的东西,以后都要一个个的捡起来。

3. 找实习的渠道很重要,我在微博上找了几个公司发了邮件去问基本上都收到回复了,时效性比较强。大街网上一堆HR很感兴趣的投递都没什么反馈,还是要转变思路吧。

78>65>

python实习生面试题_【实习】暑期实习之python笔试题(一)相关推荐

  1. python招聘笔试题_滴滴2020年春招笔试题分析(Python)

    数据背景来自:优梨:滴滴2020年春招Sql笔试题分析​zhuanlan.zhihu.com 这里就不再重复了,主要描述如何使用python数据清洗 问题: 1.订单的平均应答率是多少?完单率是多少? ...

  2. 乐飞天下python笔试题_滴滴2020年春招笔试题分析(Python)

    数据背景来自:优梨:滴滴2020年春招Sql笔试题分析​zhuanlan.zhihu.com 这里就不再重复了,主要描述如何使用python数据清洗 问题: 1.订单的平均应答率是多少?完单率是多少? ...

  3. 华为芯片设计面试题_华为公司面试硬件工程师笔试题

    华为公司面试硬件工程师笔试题 华为是我国知名的大企业,那么它在招聘硬件工程师的时候有什么要求呢?以下是百分网小编精心为大家整理的华为公司面试硬件工程师笔试题,希望对大家有所帮助!更多内容请关注应届毕业 ...

  4. java ajax面试题_几道Web/Ajax的笔试题

    一.说说你常用的几个jsp隐式对象,例如PageContext等, 二.简述你对Java Web MVC设计模式的理解. 三.如果接触过webwork2.spring开源框架,简单评诉对它们的理解. ...

  5. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

  6. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  7. vue 百度统计_百度暑期实习前端开发面经

    前言 百度暑期实习招聘是不分部门的,集体统一面试,通过了后再由公司划分到具体部门. 百度前端面试很注重基础考察,而且考察CSS也挺多的,这是我在面试其他公司没有感觉到的,不知道大家有没有这种感受.所以 ...

  8. 开源在线文档编辑工具_开源暑期实习,在线教育新工具等

    开源在线文档编辑工具 开源新闻让您阅读愉快. 2014年2月24日至28日 在本周的开源新闻摘要中,我们将介绍慕尼黑在转储专有软件,Mozilla的移动Firefox OS上的隐私等方面的进展. 慕尼 ...

  9. python代码编写工具_编写更好的Python代码的终极指南

    python代码编写工具 Despite its 尽管它 downsides, Python remains the king of today's programming world. Its ve ...

  10. dpresult在python中什么意思_动态规划(DP)的整理-Python描述

    今天整理了一下关于动态规划的内容,道理都知道,但是python来描述的方面参考较少,整理如下,希望对你有所帮助,实验代码均经过测试. 请先好好阅读如下内容--什么是动态规划? 摘录于<算法图解& ...

最新文章

  1. idea 添加jar包到maven项目的方法
  2. 蓝军HVV实用工具和网站总结
  3. go使用redis——redigo使用HMSET存储结构体
  4. 给mac配置adb 路径
  5. UPS Online Tools(一) --- Tracking
  6. 用 扩展事件抓取过去的死锁
  7. 7. where loop
  8. Python简单游戏代码
  9. 高通又不务正业做WiFi了?那你可能想错了
  10. PHP合并多个excel文件
  11. If 表达式和条件语句
  12. Prolog语言及程序设计汇总
  13. 管理软件开发的最高境界,那就是“无代码开发”
  14. UEFI原理与编程实践-PROTOCOL
  15. echarts图表格式记录
  16. Photoshop十种抠图方法
  17. 扩展卢卡斯 (板子)
  18. 求导四则运算以及三角函数求导 Derivative formulas
  19. nodejs图片处理(上传图片,复制图片,移动图片)
  20. 习题 7-16 找座位(Finding Seats Again, UVa11846)

热门文章

  1. css属性选择器,[],=, ~=, ^=, ~=, $=, |=等符号含义
  2. CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景
  3. zedboard板子上呼吸灯的实现(第一版)仿真代码的实现
  4. matlab的GUI实验——实现简单信号发生器
  5. 【shell】echo不显示变量中的多个空格
  6. 熊猫烧香病毒-源码学习
  7. 小白知识摘录__环境变量
  8. 20172329 2017-2018-2 《程序设计与数据结构》第五周学习总结
  9. Django-(分页器,中间介)
  10. SLAM学习笔记 - ORB_SLAM2源码运行及分析