python笔试题(-)

1.如何查看占用8080端口的是什么进程?
    netstat –apn | grep 8080
2.DNS解析过程是怎样的?有几种解析方式,各自的区别是什么?
    1) 浏览器缓存
  当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
  2) 系统缓存
  当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
  3) 路由器缓存
  当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;
  4) ISP(互联网服务提供商)DNS缓存
  当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
  5) 根域名服务器
  当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。
    根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;
  6) 顶级域名服务器
  顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;
  7) 主域名服务器
  主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
  8)保存结果至缓存
  本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。
    1.递归查询: 
    一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机; 
    2.迭代查询(反复查询): 
    一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;
3./temp 独立挂载在一个分区上,现发现其磁盘空间满了,小文件过多。现在请用命令删除所有文件?
  umount /temp
  fidsk /temp  -m -d 1 -w
4.TCP建立连接三次握手,断开连接四次握手的过程是怎样的?
  三次握手:
   (1)主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。
     (其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接请求数据报文:序号seq=x,表明传输数据时的第一个数据字节的序号是x);
   (2)主机B收到请求后,会发回连接确认数据包。
    (其中确认报文段中,标识位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含主机B的初始序列号seq(B)=y,以及主机B对主机A初始序列号的确认号ack(B)=seq(A)+1=x+1)
   (3)第三次,主机A收到主机B的确认报文后,还需作出确认,即发送一个序列号seq(A)=x+1;确认号为ack(A)=y+1的报文;
   四次握手:
    假设主机A为客户端,主机B为服务器,其释放TCP连接的过程如下:
    (1)关闭客户端到服务器的连接:首先客户端A发送一个FIN,用来关闭客户到服务器的数据传送,然后等待服务器的确认.其中终止标志位FIN=1,序列号seq=u
   (2)服务器收到这个FIN,它发回一个ACK,确认号ack为收到的序号加1。
   (3)关闭服务器到客户端的连接:也是发送一个FIN给客户端。
   (4)客户段收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加1.
     首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
5.写一个脚本,处理以下文本内容,将域名取出,并进行计数排序
    http://www.immomo.com/index.html
    http://club.immomo.com/small_552.htm
    http://news.immomo.com/dzjk/nrsj/
    http://www.immomo.com/il_sii_3803.htm
    http://www.immomo.com/test.php
    http://club.immomo.com/big_303.htm
得出如下结果:
    www.immomo.com
    club.immomo.com
    news.immomo.com
使用bash/perl/python/ruby/php的任意一种语言
    import re
    with open('a.txt','r') as f:
    file_all=f.read()
    result=re.findall(r'http://(.*com?)',file_all)
    for i  in  set(result):
        print(i)
6.Linux command:free,如下:
$free -m
     total used free shared buffers cached
 Mem: 3832 1188 2644 0 257 666
 -/+buffers/cache:264  3568
 Swap:    7999  0  7999
 请问swap,total,free,shared,buffers,cached各是什么意思?
     swap:表示硬盘上交换分区的使用情况
     total:表示系统可使用的物理内存的总量为3832
     free:表示为分配的物理内存为232
     shared:多个进程共享的内存总数
     buffers:已经被系统分配而未使用的buffer内存257
     cached:已经被分配而未使用的cache内存为666 
 7.什么是python中的装饰器,怎么使用?
    装饰器本质上是一个python函数或者类,它可以让其他函数或者类在不需要做任何代码修改的前提下,
    增加额外功能,装饰器的返回值也是一个函数/类对象
    使用:@+装饰器函数 写在被装饰函数的上面
    def log(level):
        def dec(func):
            def wrapper(*args,**kwargs):
                print "before func was called"
                func(*args,**kwargs)
                print "after func was called"
            return wrapper
        return dec
    @log(2)
    def funcLog():
        print "funcLog was called"
    funcLog()
==>
before func was called
funcLog was called
after func was called
 
 8.分别举例说明Python中list/dict/set comprehensions.
    list:[x**2 for x in range(10)]
    dict:
        strings=['workhard','is','important']  
        D={key: val for val,key in enumerate(strings)}  
    set:{x**2 for x in [1, 1, 2]}
 9.在Python中怎么有效读取一个20GB大小的文件?
    文件名:a.text
    with open('a.text','r',encoding='utf-8') as f:
        for line in f:
            do_something(line)    
 10.使用Python实现一个stack。
    class Stack(object):
        def __init__(self):
            self.items=[]
        def is_empty(self):
            return self.items == []
        def peek(self):
            return self.items[len(self.items)-1]
        def size(self):
            return len(self.items)
        def push(self,items):
            self.items.append(item)
        def pop(self,item):
            return self.items.pop()
    if __name__==__main__:
        my_stack=Stack()
        my_stack.push('a')
        my_stack.push('b')
        print(my_stack.size())
        print(my_stack.peek())
        print(my_stack.pop())
        print(my_stack.peek())
        print(my_stack.size())
        print(my_stack.pop())
        print(my_stack.size())
            
            
            
 
 
 

 

posted @ 2018-02-15 09:23  爱笑的大象  阅读(453)  评论(0编辑  收藏  举报