笔试题102-117

102、

# 编程实现一个先进先出的队列类,能指定初始化时队列大小,以及cnqueue,dequeue,
# is_empty,is_full四种方法
'''
s=Queue(2) 初始化一个大小为2的队列
s.is_empty() 初始化后,队列为空,返回True
s.cnqueue(1) 将1加入队列
s.cnqueue(2) 将2加入队列
s.is_full() 加入两个队列元素,队列已满,返回True
s.dequeue() 移除队列中的一个元素返回1
s.dequeue() 移除队列中的一个元素返回2
s.is_empty() 队列为空,返回True
'''

class Queue(object):
def __init__(self,n):
self.n = n
self.l = []
def is_empty(self):
if not self.l:
return True
def is_full(self):
if len(self.l) < self.n:
return True
return False
def cnqueue(self,k):
if self.is_full():
self.l.append(k)
def dequeue(self):
self.l.pop(0)

103、

# 编程实现一个后进先出的队列类,能指定初始化时栈大小,以及push,pop,
# is_empty,is_full四种方法
'''
s=Stack(2) 初始化一个大小为2的栈
s.is_empty() 初始化后,栈为空,返回True
s.push(1) 将1加入栈
s.push(2) 将2加入栈
s.is_full() 加入两个栈元素,栈已满,返回True
s.pop() 移除栈中的一个元素返回1
s.pop() 移除栈中的一个元素返回2
s.is_empty() 栈为空,返回True
'''

class Stack(object):
def __init__(self,n):
self.n = n
self.l = []
def is_empty(self):
if not self.l:
return True
def is_full(self):
if len(self.l) < self.n:
return True
return False
def push(self,k):
if self.is_full():
self.l.append(k)
def pop(self):
self.l.pop()

104、有一个数组,[3,4,1,2,5,6,6,5,4,3,3]请写一个函数,找出该数组中没有重复数的和

  答:

l = [3,4,1,2,5,6,6,5,4,3,3]
def xxx(l):
d = {}
s = 0
for i in l:
if i not in d:
d[i] = 1
else:
d[i] += 1
for k,v in d.items():
if v == 1:
s += k
return s

105、从0-99折100个数中随机取10个,要求不能有重复,可以自己设计数据结构

  答:

import random
def ran():
l = []
while len(l) < 10:
x = random.randint(0, 11)
if x not in l:
l.append(x)
return l

106、Cookie和Session有什么区别

  答:Cookie是把所有数据保存在用户浏览器的键值对

    Session是把数据保存在服务器后端的键值对,通过保存在用户端的Cookie值来调用

107、HTTP协议是有状态协议还是无状态协议,如何从两次请求中判断是同一用户

  答:无状态协议,通过cookie或session的传递来判断用户身份

108、以下代码将输出什么

l = ['a','b','c','d','e']
print(l[10:])

  答:空列表

109、以下代码的输出将是什么,说出你的答案,并解释

  

def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')

print(list1)
print(list2)
print(list3)
你将如何修改函数的定义来产生期望的结果
答:[10, 'a'][123][10, 'a'],将list=[]写在函数体中

110、给定一个整数数组,返回两个数字索引,使得他们相加和一个目标值相等

  例如nums = [2,7,11,15] 目标是9,返回[0,1]

nums = [2,7,11,15]

def n(nums,aim):
for i in range(len(nums)):
for j in range(i+1):
if i == j:continue
elif nums[i] + nums[j] == aim:
return [j,i]
return None

111、arr= [1,2,3]

  def bar():

    arr += [5]

  bar()

  print(arr)

  A、error   B、[5]   C、[1,2,3]    D、[1,2,3,5]

112、Python,判断一个字典中是否有这些key:'AAA','BB','C','DD','EEE'(不使用for,while)

  答:i in dict

113、Python一行print出1~100偶数列表(列表推导时,filter都可)

  答:print([i for i in range(1,101) if i % 2 == 0])

114、1,2,3,4,5能组成多少个互不相同且无重复的三位数(程序实现)

  答:

l = ['1','2','3','4','5']
def m(l):
n = 0
for i in l:
for j in l:
for k in l:
if i == j or j == k or i == k:continue
print(i+j+k)
n += 1
print(n)

115、写出HTTP的五种请求方法

  答:get  post  delete  put   head  option  connect

116、描述多进程开发中,join与daemon的区别

  答:join是使主进程等待子进程执行完毕后主进程关闭,daemon是主进程关闭,守护进程使其他子进程关闭

117、简单描述GIL对Python的性能影响

  答:使Python不能真正意义上的多线程,同一时刻只能有一个线程运行

 

posted @ 2018-02-17 12:41  风火林山  阅读(194)  评论(0编辑  收藏  举报