zoukankan      html  css  js  c++  java
  • 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())
                
                
                
     
     
     
  • 相关阅读:
    如何让django方法自动地定期执行
    Python的PIL库实现验证码图片
    解决Python2.7的UnicodeEncodeError: 'ascii' codec can’t encode异常错误
    js分页页码算法
    Django站点管理--ModelAdmin
    Django时间查询
    django orm总结
    django Q和F查询
    ubuntu安装redis
    买入股票必须遵循的原则
  • 原文地址:https://www.cnblogs.com/sxh-myblogs/p/8449262.html
Copyright © 2011-2022 走看看