• 面试真题讲解



    一、选择题(32分)
    1、python不支持的数据类型有 A
    A、char # 字符 , 只有在 c 语言有,在python是字符串
    B、int
    C、float
    D、list
    2. E
    x = “foo”
    y = 2
    print(x+y)
    A.foo B.foofoo C.foo2 D.2 E.An exception is thrown
    3、关于字符串下列说法错误的是 B
    A、字符应该视为长度为1的字符串
    B、字符串以标志字符串的结束 # C语言
    C、既可以用单引号,也可以用双引号创建字符串
    D、在三引号字符串中可以包含换行回车等特殊字符
    4、以下不能创建一个字典的语句是 C
    A、dic1 = {}
    B、dic2 = {123:345}
    C、dic3 = {[1,2,3]:'uestc'} # key :不可变,列表是可变的
    D、dic3 = {(1,2,3):'uestc'}
    5.Kvps = {‘1’:1,’2’:2} D
    theCopy = kvps
    kvps[‘1’] = 5
    sum = kvps[‘1’] + theCopy[‘1’]
    Print sum
    A.1 B.2 C.7 D.10
    6、以下何者是不合法的布尔表达式: B
    A.x in range(6) # 1 in range (4)
    B.3=a # 赋值不是布尔值,但是 3 = a 不是赋值关系
    C.e>5 and 4==f D(x-6)>5
    7、下列表达式的值⼀定为True的是 B
    A.5+4j>2-3j B.3>2==2
    C. e>5 and 4==f D.(x-6)>5
    8、已知x=43,ch=‘A’,y = 1,则表达式(x>=y and ch<‘b’ and y)的值是 B
    ascll a字母都是65到100之间
    A、0
    B、1 True and 1 --> 1
    C、出错
    D、True
    9、下列表达式中返回 为True的是: c
    A、3>2>2
    B、’abc’>’xyz’
    C、0x56 > 56 0x56是16进制
    D、(3,2)>(‘a’,’b’) # int 与 str 不能比较 元组 比较的是()里第一个数
    10、下列Python语句正确的事(多选) AD
    A、min = x if x < y else y
    B、max = x > y ? x : y # 在c语言有
    C、if(x>y) print(x)
    D、while True:pass
    11.若k为整形,下述while循环执⾏的次数为: A
    k=1000
    while k>1:
    print k # 看到这个是python 2
    k=k/2
    A.9 # py2 B.10 # py 3
    C.11 D.100

    12、以下叙述正确的是: B
    A、continue语句的作用是结束整个循环的执行 # 结束本次
    B、只能在循环体内使用break语句
    C、在循环体内使用break语句或continue语句的作用相同
    D、从多层循环嵌套中退出时,只能使用goto语句 # goto在c语言,python没有

    13、关于python中的复数,下列说法错误的是 B
    A、表示复数的语法是real+image j
    B、实部和虚部都是浮点数
    C、虚部必须后缀j且j不区分大小写
    D、方法conjugate返回复数的共轭复数 # 2+3j 2-3j
    14、下面的语句哪个会无限循环下去: B
    A、for a in range(10): # for 循环是有限的
    time.sleep(10)
    B、while 1<10:
    time.sleep(10)
    C、while True:
    break
    D、a = [3,-1,',']
    for i in a[:]:
    if not a:
    break
    15、下面的代码,哪些会输出1,2,3三个数字(多选,选错不得分): BD
    A 、for i in range(3):
    print(i)
    B、aList = [0,1,2]
    for i in aList: # 0,1,2
    print(i+1) # 1,2,3,
    C、i = 1
    while i < 3:
    print(i)
    i+=1
    D、for i in range(3):
    print(i+1)
    16、Python如何定义一个函数: C
    A、class <name>(<type> arg1,<type> arg2,…<type> argN)
    B、function <name>(arg1,arg2,…argN)
    C、def <name>(arg1,arg2,…argN) python是弱类型语言
    D、def <name>(<type> arg1,<type> arg2,…<type> argN) # type 是类型
    二、填空题(10分)
    1、以下函数需要在其中饮用一个全局变量k,请填写语句:
    def fun()
    ___globals k___
    k = k+1
    2、L=range(100) # range 是迭代器
    1) 取第一到第三个元素_____L[0:3] ----> list(L[:3])# 转list节省内存
    2) 取倒数第二个元素_______L[-2]
    3) 取后十个元素_______L[-10:] ---> list([-10:])
    4) 把L复制给L1用_______L1 = L.copy()
    L1 =L (这是赋值)
    3、判断dict有没有某个key用的方法是_______key in dict
    get()
    4、获取list的元素个数,和向末尾追加元素的方法分别是____len(list)__ ____list.append()___
    5.以下的代码的输出将是什么: _______
    def extendList(val,list=[]):
    list.append(val)
    return list
    list1 = extendList(10)
    list2 = extendList(123,[]) # 用的不是list的列表
    list3 = extendList('a')
    print 'list1 = %s'%list1 [10,'a']
    print 'list2 = %s'%list2 [123]
    print 'list3 = %s'%list3 [10,'a']
    6.下⾯程序的输出结果是:___yes____
    x=True
    y=False
    z=False
    if x or y and x:
    print "yes"
    else:
    print "no"
    三、简答题(20分)
    1、如何判断一个变量是不是字符串
    内存地址相同,值一定相同
    type(a)is str

    2、is 和 == 的区别
    is 比较的是内存地址
    == 比较的是值

    3、Python⾥⾯如何实现tuple和list的转换。
    tuple() list()

    4、list和tuple有什么不同
    list是可变的数据类型 tuple是不可变的数据类型
     
    5、如何得到列表list的交集与差集。
    先转换成集合set() 用difference()求差集,利用intersection()求交集
    or 先转换集合 s&b a-b
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 & set2) # {4, 5}
    print(set1.intersection(set2)) # {4, 5}
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2) # {1,2,3}
    print{set1.difference(set2)} # {1,2,3}

    6、Python中定义函数时如何书写可变参数和默认参数?
    *args,key=1,**kwargs(顺序)

    7、*args和**kwargs在什么情况下会使⽤到?请给出使⽤**kwargs的事例
    在函数传参不确定的时候,*args接收所有位置传参,**kwargs 接收所有按关键字传参比如装饰器
    def timer(func):
    def inner(*args,**kwargs):
    print('茶卡盐湖')
    ret = func(*args,**kwargs)
    print('拉布达衲')
    return ret
    return inner

    @timer
    def li2():
    print('天空之境')
    li2()

    8、请描述unicode,utf-8,gbk等编码之间的关系?
    unicode 万国码,任何一个字符==四个字节
    utf-8 万国码的升级版 一个中文字符==三个字节 英文是一个字节 欧洲的是 2个字节
    gbk 国内版本 一个中文字符==2个字节 英文是一个字节
    gbk 转 utf-8 需通过媒介 unicode

    9、如何使用python删除一个文件
    import os
    os remove(‘文件路径’)

    10、def func(a,b,c=0,*args,**kwargs): # c=0与*args需换位置
    pass
    *args,**kwargs的作用是什么?

    *args接收所有位置传参,**kwargs 接收所有按关键字传参

    四、写代码(38分)
    1、d={‘a’:1,’b’:2,’c’:3}请打印出key、value对(3分)
    d={'a':1,'b':2,'c':3}
    for k in d:
    print(k,d[k])

    # 2、请写出⼀段Python代码实现删除⼀个list⾥⾯的重复元素。(6分)#字典放不了集合

    li = [1,2,2,2,2,3,4,55,55]
    set1 = set(li)
    li = list(set1)
    print(li)

    new_l= []
    for i in li:
    if i not in new_l:
    new_l.append(i)
    print new_l

    3、使⽤Python/C 上机解决以下题⽬(13分)
    1)
    斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最⼤的斐波那契数,并求出他
    是第⼏个斐波那契数。
    count = 2
    a,b = 1,2
    while a+b < 4000000:
    c = a+b
    a = b
    b = c
    count += 1
    print(c) #3524578
    print(count) # 32


    2)
    dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
    dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    要求写⼀段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保
    留,如果是字符串就拼接,如上⽰例得到结果为:
    dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}

    dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
    dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    dictc = dicta
    for key in dictb:
    if key in dictc:
    dictc[key] = dictc[key] + dictb[key] # [key] 索引他的值
    else:
    dictc[key] = dictb[key]
    print(dictc)
    5、什么是装饰器?写⼀个装饰器,可以打印输出⽅法执⾏时长的信息(8分)
    装饰器:在不改变函数的情况下,在函数前后面添加功能
    import time
    def timer(func):
    def inner(*args,**kwargs):
    start = time.time()
    ret = func(*args,**kwargs)
    end = time.time()
    print('我会对你说一世情话')
    print(end-start)
    return ret
    return inner

    @timer
    def list():
    print('如果全世界都对你恶语相加')
    list()

    6、请写出log的实现(主要功能是打印函数名)(8分)
    @log
    def now():
    print ‘2017-08-31’
    >>>now()
    输出:

    def log(func):
    def inner(*args, **kwargs):
    print('call %s()' % func.__name__)
    ret = func(*args, **kwargs)
    return ret
    return inner
    @log
    def now():
    print('2017-08-31')now()
    
    
    附加题(20分)
    有⼀个数据结构如下所⽰,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字
    典。如果指定字段不存在,则跳过该字段。(10分)
    data:{"time":"2016-08-05 T13:13:05",
    "some_id": "ID1234",
    "grp1":{ "fld1":1,
    "fld2":2},
    "xxx2":{ "fld3":0,
    "fld5":0.4},
    "fld6":11,
    "fld7":7,
    "fld46":8}
    fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19 splir
    def select(data,fields):
    # TODO:implementation
    return result
    def select(data,fields):
    fields_lst = fields.split(‘|’)
    for key in data:
    if type(data[key]) == dict:
    pass
    return result

    data={"time":"2016-08-05T13:13:05",
    "some_id":"ID1234",
    "grp1":{ "fld1":1,"fld2":2},
    "xxx2":{ "fld3":0,"fld5":0.4},
    "fld6":{"key":{ "fld19":1}},
    "fld7":7,
    "fld46":8}
    fields='fld2|fld3|fld7|fld19'

    #计算机思想:压栈,Alex
    def select(data,fields):
    l = [data]
    field_lst = fields.split('|')
    result = {}
    while l: # l = []
    data = l.pop() #data = { "fld1":1,"fld2":2}
    for key in data:
    if type(data[key]) == dict:
    l.append(data[key]) # l = [{ "fld1":1,"fld2":2},{ "fld3":0,"fld5":0.4},{"key":{ "fld19":1}}]
    elif key in field_lst:
    result[key] = data[key]
    return result

    print(select(data,fields))
    
    
  • 相关阅读:
    在Oracle怎样查询表中的top10条记录
    Ant
    oracle 时间函数(sysdate)
    oracle 时间函数 (to_date)
    Maven仓库管理器
    数据库中select into from 和 insert into select的区别
    oracle 定时器简单用法
    oraclea 定时器
    XP Home Edition SP2 也可以装 Rational Rose 2003
    Unity3D动态天空之UniSky
  • 原文地址:https://www.cnblogs.com/jassin-du/p/7799730.html
Copyright © 2020-2023  润新知