zoukankan      html  css  js  c++  java
  • 面试题04

    1.如何实现python列表去重并保持原有顺序?
    li  = [1,2,5,1,2,5]
    li2 = list(set(li))
    print(li2)
    2.现有两元祖(('a'),('b')),(('c'),('d')),请使用python匿名函数生成列表[{'a':'c'},{'b':'d'}]
    tu1 = (('a'),('b'))
    tu2 = (('c'),('d'))
    func = lambda x,y:[{x[0]:y[0]},{x[1]:y[1]}]
    li = func(tu1,tu2)
    print(li)
    # func = map(lambda x,y:[{tu1[0]:tu2[0]},{tu1[1]:tu2[1]}])
    # print(func)
    a = map(lambda x:x**2,range(10))
    print(list(a))
    3.请给出二分查找的python示列代码。
    from timewrap import *
    
    @cal_time
    def bisection_method(li,val):
        '''二分法'''
        start = 0
        end = len(li)-1
        while start <=end:
            mid = (start+end) // 2
            if li[mid] < val:
                start = mid+1
            elif li[mid] > val:
                end  = mid -1
            else:
                return mid
        else:
            return -1
    @cal_time
    def index_search(li,val):
        '''内置索引查找'''
        try:
            return li.index(val)
        except Exception:
            return -1
    
    
    li = list(range(0,10**7))
    
    a=bisection_method(li,10**6+598)
    b=index_search(li,10**6+598)
    print(a)
    print(b)
    4.python字符串格式化中,%和format的主要区别是什么?
    字符串格式化% 就是C里的printf; format是python 字符串自己的方法, 推荐用format,因为比较灵活
    5.*args和**kwags在什么情况下会使用到?请给出使用**kwargs的示列代码
    6.线程,进程,协程的区别?
    7.GIL是什么,对于python有什么影响?
    GIL即全局解释器锁
    GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。
    有了GIL的存在,同一时刻同一进程中只有一个线程被执行
    8.基于对列实现一个生产者消费者模型,要求:队列内元素不能超过5个,一旦有五个元素了,生产者不再生产,其他内容自由扩散
    import queue,threading,time
    
    q = queue.Queue(maxsize= 5)
    
    def producer():
        num = 1
        while True:
    
            if not q.full():
                q.put(num)
                print('put',num)
                num+=1
    def consumer():
    
        while True:
            time.sleep(2)
            if not q.empty():
                print('get',q.get())
    
    t1 = threading.Thread(target=producer)
    t2 = threading.Thread(target=consumer)
    
    t1.start()
    t2.start()
    9.写sql语句,对下面两张表实现处理。
        table_A
        name  kecheng  fenshu 
        张三    语文    81
        张三    数学    75
        李四    语文    76
        李四    数学    90
        王五    语文    81
        王五    数学    100
        王五    英语    90
        
        tabe_B
        id    name
        1    张三
        2    李四
        3    王五
        4    小刘
        
        1.查出每门课程都大于80分的学生姓名
    select name from table_A group by name having min(fenshu)>80;
        
        2.查询语文成绩最大的学生姓名
        select max(fenshu),name form table_A while kecheng='语文'
    10.有表list,共有字段ABC类型都是整数,表中有如下记录:
    
    id    A    B     C
    1    2    7     9
    2    5    6     4
    3    3    11    9 
    (1)查询出B、C列的值,要求按B列升序排序:
    select B,C from list order by B asc
    (2)写一条新的纪录,值为 7 8 9
    inset info list(A,B,C) values(7,8,9)
    (3)查询C列,要求清除重复的值,按降序排列:
    select C from list group by C desc
  • 相关阅读:
    SQL Server 服务由于登录失败而无法启动
    一个项目涉及到的50个Sql语句
    sql server2008 数据库镜像的问题
    C# 根据枚举名(string)获得enum中的枚举值
    在不同版本的 IIS 上使用 ASP.NET MVC(转)
    sqlite 默认当前时间
    Nginx反向代理后防盗链设置
    JavaScript 图片加载
    nginx配置文件中的location中文详解
    程序设计的十个做与不做
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8452893.html
Copyright © 2011-2022 走看看