python筆記試験問題と面接問題

47202 ワード

1.なぜpythonを学ぶのか , ; , python , ; ,python , ; ,python c c++ ; , python c/c++ , ; :python , ; :python , 。 : , , , web , 、 、 、 。
2.pythonとjava、php、C、C++、C#などの言語の対比C , 。php , , linux windows 45%。 ,php5 , 。java 、 。 、 、 ( )、 、 。
3.コンパイル型言語と解釈型言語を簡単に述べる : , 。 , 。 C C++ 。 : , 。 :Python、Java、C#、JavaScript 。
4.python解釈器の種類と特徴CPython : C , CPython, python, CPython ,CPython python 。 Jython: java python , python java 。 IPython:IPython CPython , ,IPython , CPython 。
5.ビットとバイトの関係 , 0 1 。 ,8 , , 。
6.b、B、KB、MB、GB関係
8b = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB

7.PE 8仕様を5つ挙げてください
1. 4      ,   Tab,       Tab   。
3.             
4.'#'     
5.6.             
7.             
8.            
9.                    
10.11. ifforwhile12.             self,             cls

8.コードによる次の変換1. :v = "0b1111011"
In [1]: v = '0b1111011'              
In [2]: ret = int(v,2)
In [3]: print(ret)                                                              
123
2. :v = "0o11"
In [5]: v = '0o11'                                                              
In [6]: ret = int(v,8)                                                          
In [7]: print(ret)  
9
3. :v = "0x12"
In [9]: v = '0x12'
In [10]: ret = int(v,16)
In [11]: print(ret)                        
18
4. :v = 18
In [12]: v = 18                                                                 
In [13]: val = bin(18)                                                          
In [14]: print(val)                                                             
0b10010
5. :v = 30
In [15]: v = 30                                                                 
In [16]: val = oct(v)                                                           
In [17]: print(val)                                                             
0o36
6. :v = 87
In [18]: v = 87                                                                 
In [19]: val = hex(v)                                                           
In [20]: print(val)                                                             
0x57

9.ipアドレスを整数に変換する関数実装を作成してください , 。 vim
def ip_zh(ip):
    ip_list = ip.split('.')
    # print(ip_list)
    sum = ''
    for item in ip_list:
        # print(type(int(item)))
        # print(bin(int(item)))
        # print(type(bin(int(item))))
        ret = bin(int(item))[2:]
        if len(ret) < 8:
            ret = (8 - len(ret)) * '0' + ret
        # print(ret)
        sum += ret
    return int(sum,2)

print(ip_zh('10.3.9.12'))

10.python再帰の最大層数python 1000 , :
In [21]: import sys 
In [22]: sys.getrecursionlimit
Out[22]: <function sys.getrecursionlimit>
In [23]: sys.getrecursionlimit()
Out[23]: 3000

11.結果を求める
1、v = 1 or 3							#   1      13。  ,     1
2、v = 1 and 3						#   1113。  ,     3
3、v = 0 and 2 and 1 			#       ,     and,  00。   and,00
4、v = 0 and 2 or 1			    #   000    11
5、v = 0 and 2 or 1 or 4 	#   000  or 10111  or 41      16、v = 0 or Flase and 1		#   0  ,     False。  False and 1  False  ,     False

12.ASCII、Unicode、GBK、UTF-8符号化の違いを簡単に述べるASCII: , 、 , 256 , 8 。 Unicode: 32 ,Unicode 。 GBK: ,GBK 《 》。 , 2 。 UTF-8: Unicode, 8 , , 。UTF-8 3 ,UTF-8 。
13.バイトコードとマシンコードの違い , 。 , 。 , 。 java 。 , ( ), 。 , 0 1 。
14.三元演算規則及び適用シーン
15.python 2とpython 3の違いprint。 python2 print , 。 python2 , 。 , python3 ,print 。 print 。【python3 print ,python2 , 。】 python2 range , python3 , 。 python2 ASCII ,python3 UTF-8 。 python2 Unicode ,str 。 python3 str ,byte 。【python2 unicode python3 str ,python2 str python3 bytes 。 ,python2 str ,python3 bytes 。】 python2 , coding ,python3 。 python2 raw_input() python3 input() ,python2 _ _ init _ _.py ;python3 map filter:python2 ,python3
``
16.python 2とpython 3におけるintとlongの違いpython2 int long , python3 long , int 。
17.1行のコードで数値交換を実現するa , b = b , a
18.rangeとxrang関数の違いrange xrange , range list , xrange (xrange object) xrange list, , ,
python 3ではxrange関数が削除され、すべてrangeで置き換えられています.
19.ファイル操作時:xreadlinesとreadlinesの違い , ,xreadlines ,readlines list
20.ブール値がFalseの一般的な値を列挙する0,None, ( 、 、 、 )
21.文字列リストのタプルと辞書でよく使われる5つの方法を列挙する
22.lambda式のフォーマットと適用シーン
23.passの役割pass , ; , 。
#      ,       
if true:
    pass
else:
    pass
#        
def foo():
    pass
#        
while True:
    pass

24.*argsと*kwargsの役割args , , , kwargs , 。
25.isと==の違い== ,is 。
26.可変タイプと非可変タイプ , , int、str、bool、tuple , list、set、dict
27.少なくとも8つの共通モジュールを列挙するdjango、flask、pip、pygame、pymysql、numpy、pandas、hashlib、json、datetime、time、os、sys、logging ……
28.一般的な組み込み関数を列挙する


29.アクセサリーの書き方及び適用シーン
def x(func):
	def inner(*args,**kwargs):
		data = func(*args,**kwargs)
		return data
	return inner
: flask django , 、
30.サードパーティ製モジュールのインストール方法python , , setuptools 。python setuptools :easy_install pip, pip。
31.サードパーティ製モジュールの使用方法jinjia2、requests、、、、
32.「1,2,3」と[1,2,3]の相互変換の実現方法 "1,2,3" [1,2,3], split(',') [1,2,3], list int 。 [1,2,3] "1,2,3" , join 。
33.結果を求める
1 or 2						# 1
1 and 2					# 2
1 < (2==2)			#            bool  ,2==2   True,1< True   True < True,   False
1 < 2 = 2 				# 1 < 2    True,True = 2   True = True,   True

34.1行のコードで[1,4,9,16,25,36,49,64,81100]を生成する方法[i**2 for i in range(1,11)], 。
35.1行のコードは削除リストの重複する値を実現するlist(set([1,2,1,2]))
36.比較[1,2,3]と[(1),(2),(3)]および[(1,),(2,),(3,)]の違い[1,2,3] [(1),(2),(3)] , 。[(1,),(2,),(3,)] 。
37.数を定義するこの書き方def func(a,b=[])にはどんな特徴があるのか , , 。 b , :if b:b=[]
38.計算結果
[ i % 2 for i in range(10) ]			#      :[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
( i % 2 for i in range(10) )			#      ,            

39.関数にグローバル変数を設定する方法 , global , , 。
40.正則的な貪欲なマッチングとは何か , 。
import re

code = 'thanlonkikuthanlon'
ret1 = re.findall('a.*lon', code)  #     
print(ret1)  # ['anlonkikuthanlonlon']
ret2 = re.findall('a.*?lon', code)  #      
print(ret2)  # ['anlon', 'anlon']

41.loggingモジュールの役割及び適用シーンloggin : , , logging debug , 。 : , 。
42.reのmatchとsearchの違いmatch (0 ) , None:
In [1]: import re                                                               

In [2]: re.match('thanlon','thanlonlovekiku')                                   
Out[2]: <re.Match object; span=(0, 7), match='thanlon'>
search :
In [3]: re.search('thanlon','kikulovethanlon')                                  
Out[3]: <re.Match object; span=(8, 15), match='thanlon'>

43.コードで簡単にstackを実現してください
'''
       
'''
class Stack(object):
    def __init__(self):
        self.data = []

    def push(self, val):
        self.data.append(val)

    def pop(self):
        return self.data.pop()

    def top(self):
        return self.data[-1]

stack = Stack()
stack.push('Thanlon')
stack.push('Kiku')
print(stack.data)
print(stack.pop())
print(stack.pop())
'''
['Thanlon', 'Kiku']
Kiku
Thanlon
'''

44.pythonのゴミ回収メカニズム 。 , 。 , 。
45.pythonの可変タイプと非可変タイプ : list、dict, 。 。 : int、string tuple, 。 ( , )。
46.==とisの違い== is
47.filter、map、reduceの役割filter , 。 map 。 reduce 。
48.osとsysモジュールの役割os , ;sys pthon , python 。
49.乱数を生成する方法 random , : :random.randint(a,b), x a<=x<=b start stop step , :random.randrange(start,stop,step) 0 1 :random.random( ) :random.uniform(a,b)
50.pythonを使用してファイルを削除する方法 python shutil rmtree , os.remove(path) 。
51.関数か方法かをどう判断するか , 。 , 。 , , 。 “ .xxx” , xxx 。 “ .xxx” xxx, xxx 。
52.オブジェクトに下線を引く特殊な方法を挙げる__init__、__new__、__call__、__enter__、__exit__、__getitem__、__ setitem__、__ delitem__、 __ add __
53. __new__と_init__の違い__new__ ,__init__ 。__new__ , __init__ 。 __new__ , __init__ 。 __new__, __init__。
53.functoolsの関数を使用したことがあるかどうか、その役割はfunctools , 。 functools reduce , 。 functools 。
54.オブジェクト向けsuperの役割super ( ), 。 :
# coding:utf-8
class Base(object):
    def f1(self):
        print('Base.f1()')
        pass

class Foo1(object):
    def f1(self):
        super().f1()

class Foo2(object):
    def f1(self):
        print('Foo2.f1()')

class Info(Foo1, Foo2):
    pass

obj = Info()
obj.f1()
'''
  Info    f1  ,  Info    f1  
          ,     Foo1
Foo1   f1  ,Foo1  f1    super().f1()
super().f1() :  Info           (  :    Foo1   object  f1),   f1  
     Foo2, Foo2    f1  ,    Foo2   f1  
'''

55.スタティックメソッドとクラスメソッドの違い : , 。 , @staticmethod, , self , self 。 : , 。 , @classmethod, cls。 , @classmethod, cls。
56.isinstanceの役割および適用シーン
オブジェクトが指定したクラスまたはその親のインスタンスであるかどうかを判断します.
57.jsonシーケンス化を解決するには、デフォルトで中国語がunicodeに変換されます. json dumps ensure_ascii=False, ensure_ascii = True。json.dumps(v, ensure_ascii=False)
58.jsonシーケンス化時に処理できるデータ型はどれらがありますか.int、bool、str、list、dict、tuple、None( )
59.jsonシーケンス化時のサポートdatetimeタイプのカスタマイズ方法 datetime strftime , 。
60.pythonの稼働効率を向上させる方法1、 , 2、 , 3、 Cython、PyPy , 4、 、 、 5、 if elif , , , 。
61.yieldとyield fromの概要yield: yield 。 yield from: 。
62.コードを使用してディレクトリの下のすべてのファイルを列挙する os ,
import os
res = os.walk(r'E:\pycharmProjects\practice')
for a, b, c in res:
    '''
    a:       
    b:        
    c:       
    '''
    # print(a)
    # print(b)
    # print(c)
    '''
    E:\pycharmProjects\practice
    ['.idea', 'test']
    ['test.py']
    E:\pycharmProjects\practice\.idea
    []
    ['misc.xml', 'modules.xml', 'practice.iml', 'workspace.xml']
    E:\pycharmProjects\practice\test
    []
    ['index.html', 'log.txt']
    '''
    for item in c:
        path = os.path.join(a, item)
        print(path)
    '''
    E:\pycharmProjects\practice\test.py
    E:\pycharmProjects\practice\.idea\misc.xml
    E:\pycharmProjects\practice\.idea\modules.xml
    E:\pycharmProjects\practice\.idea\practice.iml
    E:\pycharmProjects\practice\.idea\workspace.xml
    E:\pycharmProjects\practice\test\index.html
    E:\pycharmProjects\practice\test\log.txt
    '''

63.文字列、リスト、メタグループ、辞書でよく使われる5つの方法 :len、join、split、strip、upper、lower、replace、isdigit、startwith、endwith、format :len、append、insert、pop、remove、clear、expend、reverse、sort :len :keys、values、items、get、pop、update
63.常用文字列のフォーマットは何種類ですか :print('%s,%s'%('thanlon','kiku')), , 。 :print('{},{}'.format('thanlon','kiku'))、print('{first},{second}.format(first='thanlon',second='kiku')'), , :print('%(first)s,%(second)s'%{'first':'thanlon','second':'kiku'}), , , , 。
64.ジェネレータ、反復可能なオブジェクト、および適用シーンについて簡単に説明する : , , 。 , 。 。__iter__ , __next__ 。 : yield , 。 , 。 , 。【 。 for , , yield 。】 : for __iter__ , ( )
65.反射および反射の適用シーンとは : ( ) ( / / ) , 。【 、 ( )。python 、 , 。】 : , 。
66.1,2,3,4,5は互いに異なる3桁の数を構成することができる
num = 0
for i in range(1, 6):
    for j in range(1, 6):
        for k in range(1, 6):
            if i != j and i != k and j != k:
                num += 1
print(num)  # 60

67.結果を求めるv = dict.fromkeys(['k1','k2'],[]) v['k1'].append(666) print(v) v['k1'] = 777 print(v)
v = dict.fromkeys(['k1', 'k2'], [])  # {'k1': [], 'k2': []}
v['k1'].append(666)
print(v)  # {'k1': [666], 'k2': [666]}
v['k1'] = 777
print(v)  # {'k1': 777, 'k2': [666]}

68.三元演算規則及び適用シーン : v = value1 if else value2, ,v = value1, v = value2。 : if else
69.lambda式フォーマットおよび適用シーンlambda : = lambda : lambda :lambda ,
70.pythonオブジェクトへの継承の特徴と利点 :1. , 。2. , 。 :1. (__init__) , ;2. , , self 。3. python , , 。
71.相手への理解について話す 、 、 、 , , , 。 。【 , 。 : ; : 。】 , , , 。 , , 。 , 。 , 、 。 : , 。  , , , , 。 , 。
72.あなたの閉鎖に対する理解について話します. : , , , 。 , 。 。 :
def outer():			#      
	b = 10
	def inner():     #     
		print(a+b)	#            
	return inner 	#        
, , , , , 。 , , , 。
73.オブジェクト向けの特殊メンバーおよび適用シーンを列挙する__init__: (), __init__ __call__: (), __call__ __getitem__: [], __getitem__ __setitem__: ['xxx']=xx, __setitem__ __delitem__:del , __delitem__ __add__: + , __add__ __enter__ __exit__:with , __enter__ __exit__ __new__: (), __new__ , __init__