1. 谈谈对C、C++、Java、C#、PHP、Python等编程语言的认识?
C语言执行效率快,直接将人能识别的到吗转换成机器码,但是代码复杂代码多并且容易代码重复
java , c# ,  python , PHP:执行效率会稍微慢一点,实现是将人能识别的代码转换成字节码,再将字节码转换成机器码。
C#:windows运行,windows掏钱
java  :学习难度大
PHP:web开发,先入为主
python代码简洁,简单易懂还有强大的类库,功能齐全
View Code
详细信息:http://www.cnblogs.com/0bug/p/8622742.html

2. 谈谈你了了解的python种类以及相关特点?
常用环境:web开发,爬虫,运维自动化,金融分析和人工智能
python的分类很多,但是规则还是只有一个
如果python需要删除某个旧版分的时候,会在更新的告诉下一个程序员,好让程序员准备好下下个版本的更新,而下下个版本就会删除该功能。
由于python代码的强大,其他语言的解释器都能执行python的代码,解释器是开发这门语言的创始人创建好的。所以我们直观写代码执行
View Code

 

3. pep8规范
代码编排:
  缩进:4个空格的缩进
  每行的最大的长度不能超过79,换行可以使用反斜杠,最好使用的是圆括号。换行点要在操作的符号的后面
  类和top-level函数定义之间空两行,类中定义的方法之间空一行,函数类逻辑无关的代码之间需要空一行。
文档编排:
  不要再一句import导入多个模块。
  如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX
  模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行
详细信息:https://blog.csdn.net/MrLevo520/article/details/69155636
View Code
 

4. 字节码和机器器码的关系和区别?
机器码:学习机器语言指令,也被称为原生码,是电脑CPU直接剋有读取的数据。
字节码:是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,字节码是一种中间码,它比机器码更加的抽象,需要直接编译后才能成为机器码的中间代码
详细信息: https://www.cnblogs.com/qiumingcheng/p/5400265.html
View Code
 

5. 运算符:
    1. 求结果:2 & 5    :  # 10 & 101 => 000 => 0
    2. 求结果:2 ^ 5    :  # 10 ^ 101 => 111 => 1*2**0+1*2**1+1*2**2=1+2+4=7
    3. 求结果:1 or 3   :  1
    4. 求结果:1 and 3   :3
    5. 求结果:0 and 2 and 1   :0
    6. 求结果:0 and 2 or 1    :1
    7. 求结果:0 and 2 or 1 or 4    :1
    8. 求结果:0 or Flase and 1    :Flase
View Code

 


6. 三元运算写法和应⽤用场景?
正确结果 if 条件 else 错误的结果 : 用于简单的if语句的判断

7. Python3和Python2的区别?
在python3 中print打印需要加上括号,range创建迭代对象的用法是非常流行的与python2中的xrange相同,除号/可以计算到精确一点的值
在python2中print打印不需要括号,range与python3中的range不同,xrange与python3中的相同。除号/只能却道整数。
详细信息:http://www.runoob.com/python/python-2x-3x.html


8. ⽤用⼀一⾏行行代码实现数值交换:

a = 1 

b = 2
a,b=b,a


9. 谈谈Python的深浅拷⻉贝?以及实现⽅方法和应⽤用场景。
浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制
深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。
1,切片可以应用于:列表、元组、字符串,但不能应用于字典。
2,深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典
View Code
详细信息:https://blog.csdn.net/u014745194/article/details/70271868



10.python2和python3中的int和long区别?
python3中没有了long类型,只用int类型,python3中int类型就相当于python2中的long类型

11. 布尔值为False的常⻅见值都有那些?
分别有[],(),{},None,'',0,False

12.range和xrange区别
在python3中的range就相当于python2中的xrange,但是在python2中的range一上来就会生成一大堆的内存空间,但是在python3中
就不会,他和python2中xrange一样,在需要某个值得时候生成他的内存空间,如果长时间不使用,就会自动清理这个内存空间


13.字符串串、列列表、元组、字典每个常⽤用的5个⽅方法?
str:
    split:分割
    strip:去掉两边的空格
    startswith:以什么开头
    endswith:以什么结尾
    lower:小写
    upper:大写
list:
    append:追加
    insert:插入
    reverse:反转
    index :  索引
    copy:拷贝
tuple:
    count:查看某个元素出现的次数
    index:索引
dict:
    get:根据key取value
    items:用于循环,去除所有的key和value
    keys:取出所有的key
    values:去除所有的value
    clear:清空字典
View Code

 


14.lambda表达式格式以及应⽤用场景?
Lambda匿名函数经常被用到filter(), map(), reduce(), sorted()函数中,这些函数的共同点是均需要函数型的参数,Lambda表达式正好适用
一般定义调用一次的函数就可以使用Lambda函数
详细信息:https://blog.csdn.net/vernice/article/details/46385131


15.求结果:
def num():
return [lambda x: i*x for i in range(4)]
print([m(2) for m in num()]) # [6,6,6,6]

16.pass的作⽤用?
pass一般用于占位语句,保持代码的完整性,不会做任何的操作


17.求结果:

v = dict.fromkeys(['k1','k2'],[])

v[‘k1’].append(666)
 print(v)
 {'k1':[666],'k2':[666]}
v[‘k1’] = 777

print(v) {'k1':777,'k2':[666]}


18.*arg和**kwarg作⽤用
动态参数,一般在定义函数是,不知道需要传入几个参数,就可以使用这个来定义参数,然后再这个里面来取
*args:按照位置传参的,将参数打包成一个元组
*kwargs:按照关键字传入参数,将传入的参数打包成一个字典


19.is和==的区别
否是用于比较判断使用的,但是比较判断的内容不相同
==是python中比较的操作符号,一般是用来判断某些的值是否相同
is是可以叫做同一比较符,是比较对象之间的身份信息是否相同。
详细信息:https://www.cnblogs.com/CheeseZH/p/5260560.html


20.⼀一⾏行行代码实现9*9乘法表
print('\n'.join([' '.join(['%s*%s=%2s' %(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))


21.如何安装第三⽅方模块?以及⽤用过哪些第三⽅方模块?
1 可以在pycharm里面的settings里面手动的添加第三方模块,
2 在cmd终端可以使用pip install 安装第三方模块
我用过的第三方模块大概有:requests,pymysql,DBUtils等等


22.常⽤用模块都有那些?
re,os,random,json,time等等


23.re的match和search区别?
match:尝试从字符串起始位置开始匹配如果没有就会返回None
search:从字符的起始位置开始匹配,匹配到第一个符合的就不会去匹配了


24.什什么是正则的贪婪匹配?
匹配一个字符串没有节制,能匹配多少就去匹配多少,知道没有匹配的为止

25.求结果:

a. [ i % 2 for i in range(10) ]
 # [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
b. ( i % 2 for i in range(10) ) # <generator object <genexpr> at 0x03535090>是一个内存地址
b=(i%2 for i in range(10))for i in b: print(i)
26.求结果:

a. 1 or 2
 1
b. 1 and 2
 2
c. 1 < (2==2)
 Falsed. 1 < 2 == 2 True


27.def func(a,b=[]) 这种写法有什什么坑?
函数陷阱,列表是一个可变类型,可以在任何的地方修改他那里面的数据


28.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’]
print('1,2,3'.split(','))


29.如何实现[‘1’,’2’,’3’]变成[1,2,3]
([int(i) for i in ['1','2','3']])


30.内置函数:map、reduce、filter的⽤用法和区别
map:便利序列,为每一个序列进行操作,获取一个新的序列
reduce:对于序列里面的所有内容进行累计操作
ffilter:对序列里面的元素进行筛选,最终获取符合条件的序列。


31.如何⽤用⼀一⾏行行代码⽣生成[1,4,9,16,25,36,49,64,81,100]
print([i**2 for i in range(1,11)])


32.⼀一⾏行行代码实现删除列列表中重复的值。
print(list(set([1,2,4,5,3,1,5,6,1,9])))


33.如何在函数中设置⼀一个全局变量量
使用global就可以设置一个全局变量


34.请⽤用代码简答实现stack。
详细信息:https://www.cnblogs.com/chongyou/p/7099692.html
Stack():创建一个新的空栈
push(item):添加一个新的元素
item到栈顶
pop():弹出栈顶元素
peek():返回栈顶元素
is_empty():判断栈是否为空
size():返回栈的元素个数
class Stack:    
  def __init__(self):        
    self.items=[]    
  def is_empty(self): 
         return self.items==[]    
  def push(self,item):    
       self.items.append(item)    

  def pop(self):        
    return self.items.pop()    
  def peek(self):        
    return self.items[len(self.items)-1]    
  def size(self):        
    return len(self.items)
if __name__ == '__main__':    
  stack = Stack()    stack.push("hello")    
  stack.push("world")    
  stack.push("lcg")    
  print(stack.size())   
  print(stack.peek())    
  print(stack.pop())    
  print(stack.peek())    
  print(stack.pop())    
  print(stack.peek())   
    print(stack.pop())
View Code

 

35.常⽤用字符串串格式化有哪些?%s,%d,也就是%占位符format:通过位置匹配和关键字匹配可以实现字符串的格式化


36.如何理理解⽣生成器器和迭代器器?
生成器:有yield关键字的函数就是一个生成器,生成器一定是一个迭代器
有__iter__和__next__方法的对象就是一个迭代器,但是迭代器不一定是生成器
详细信息:https://www.zhihu.com/question/20829330


37.⽤用Python实现⼀一个⼆二分查找的函数。
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def search(zhi,li,start=0,end=None):
    end = len(li) if end is None else end
    zj = (end - start) // 2+start
    if start<=end:
        if zhi>li[zj]:
            return search(3,li,start=zj+1,end=end)
        elif zhi<li[zj]:
            return search(3,li,start=start,end=zj-1)
        else:
            return zj
    return '找不到这个值'
print(search(8,li)
View Code

38.求结果: 
a = (1)print(a)      # (1)
b = (1,)print(b) # (1,)


39.谈谈你对闭包的理理解?
闭包函数就是内部的函数调用外部函数的变量,常用于装饰器。


40.python递归的最⼤大层数是多少?
998层



41.os和sys模块的作⽤用?
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;
sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。



42.谈谈你对⾯面向对象的理理解?以及三⼤大特性是如何理理解?
面向对象是一种编程思想,以类的眼光来看待事物的一种方式。将有共同的属性和方法的事物封装到同一个类下面。
封装:将有共同的属性和方法封装到到同一个类下面
继承:将多个类的共同属性和方法封装到一个父类下,然后在用这些类来继承这个类的属性和方法
多态:python天生是支持多态的。指的就是基类的同一个方法在不同的派生类中有着不同的功能



43.如何⽣生成⼀一个随机数?
random.random()random.randint(1,100)



44.如何使⽤用python删除⼀一个⽂文件
import os
os.remove('文件名以及路径')



45.⾯面向对象深度优先和⼴广度优先是什什么?
在python2继承查找的顺序就是深度优先,意思就是按照一条路线找到底,第二次如果还会有这些类,就不会再去查找
python3中继承查找的顺序就是官渡优先,意思就是从左到右查找,找到他们的祖先,只要不是共同的祖先,就会继续查找,如果共同的祖先类,就会在找完他的最后一个派生类的时候就要去查找共同的祖先


46.⾯面向对象中super的作⽤用?
主要用于子类继承父类的所有属性和方法


47.是否使⽤用过functools中的函数?其作⽤用是什什么?
用于装饰器中,functools.wraps() :主要是用来修复装饰器



48.如何判断是函数还是⽅方法?
看他的调用者是谁,如果是类,需要传入一个参数self的值,这时他就是一个函数,如果调用者是对象,不需要给self传入参数值,这时他是一个方法



49.静态⽅方法和类⽅方法区别?
尽管 classmethod 和 staticmethod 非常相似,但在用法上依然有一些明显的区别。classmethod 必须有一个指向类对象的引用作为第一个参数,而 staticmethod 可以没有任何参数。



50.列列举⾯面向对象中的特殊成员以及应⽤用场景
__call__
__new__
__init__
__doc__
__class__
__del__
__dict__
__str__
在falsk源码用到......
View Code

 

51. 1、2、3、4、5 能组成多少个互不不相同且⽆无重复的三位数import itertoolsprint(len(list(itertools.permutations('12345',3))))


60个
题意理解:
组成后的数值不相同,且组合的三个位数之间数字不重复。
使用python内置的排列组合函数(不放回抽样排列)
product 笛卡尔积  (有放回抽样排列)
permutations 排列  (不放回抽样排列)
combinations 组合,没有重复  (不放回抽样组合)
combinations_with_replacement 组合,有重复  (有放回抽样组合)



52.什什么是反射?以及应⽤用场景?
反射就是以字符串的方式导入模块,以字符串的方式执行函数应用的的场景在rest framework里面的CBV


53.metaclass作⽤用?以及应⽤用场景?
用来指定指定某个类是由哪个类创建的
应用场景在于: 为了当创建类使能够自动地改变类。 通常会为API做这样的事情,希望可以创建符合当前上下文的类。



54.⽤用尽量量多的⽅方法实现单例例模式。
详细信息:https://www.cnblogs.com/huchong/p/8244279.html
详细实例:http://www.cnblogs.com/fangjie0410/p/8729265.html



55.装饰器器的写法以及应⽤用场景。
详细信息:http://www.cnblogs.com/fangjie0410/p/7459976.html



56.异常处理理写法以及如何主动跑出异常(应⽤用场景)
详细信息:http://www.cnblogs.com/fangjie0410/p/7515445.html



57.什什么是⾯面向对象的mro
解析类继承的查找顺序,再不知道继承顺序的情况下,可以使用这个来查找
详细信息:http://python.jobbole.com/85685/58.isinstance

58.isinstance作用以及应用场景?
作⽤用以及应⽤用场景?用来判断一个对象是否是这个类以及他的子类的实例



59.什什么是断⾔言?应⽤用场景?
assert断言:声明其布尔值为真,如果断言失败就会抛出异常一般用于人的测试环节



60.写函数,实现功能:给定一个整数数组,返回这两个数字的索引,使它们合计成一个特定的目标。你可以假设每个输入都有一个解决方案。
li=[1,2,3,4]
def func(nums,li):
    li1=[]
    for i in range(len(li)):
        for j in range(i+1,len(li)):
            if li[i]+li[j]==nums:
                li1.append([i,j])
    return li1

print(func(5,li))
View Code

 


posted on 2018-04-06 23:33  方少0410  阅读(478)  评论(0编辑  收藏  举报