考試題-路飛中期(卷一)

全棧11期考試題前端

考試須知:git

  • 分值:100分
  • 考試時間:3小時
  • 考試類型:閉卷考試
  • 考試紀律:
    • 教室斷網
    • 禁止翻閱筆記
    • 禁止互相討論
    • 禁止拷貝
    • 以上狀況,一經發現取消考試成績並處以留級處理。

考試範圍面試

  • Python基礎
  • 數據庫
  • django
  • 路飛學城相關
  • Linux

 

考試題目正則表達式

第一部分:Python基礎部分(13分)redis

  1. 寫代碼實現:val = 「i am a string」,實現一個方法,將字符串逆序輸出(2分)

val = 「i am a string」shell

val.reverse()數據庫

  1. 判斷101-200之間有多少個質數(2分)
    提示:一個大於1的天然數,除了1和它自身外,不能被其餘天然數整除的書叫質數
  2. 簡述正則表達式中的貪婪匹配並舉例說明(2分)

math匹配儘可能多的字符,django

seroutchvim

  1. 寫代碼(3分)
              v1 = {11,22,33}
              v2 = {22,44,55}
     a. 如何獲取v1 中存在而v2中不存在的值?

 

list=[]api

For i in v1:

    If i not in v2:

      list.appent(i)

Print (list)
 b. 如何獲取v2 中存在而v1中不存在的值?

list=[]

For i in v2:

    If i not in v1:

      list.appent(i)

Print (list)
 c. 如何獲取v1和v2中都存在的值?

list=[]

For i in v1:

    For j in v2;

      If i ==j:

          list.appent(i)

Print (list)

  1. 請編寫一個函數實現將IP地址轉換成一個整數(4分)

         如10.3.9.12 轉換規則爲:

                  10            00001010
                    3            00000011

                  9            00001001
                  12            00001100

 

 

a = '10.3.9.12'

list = []

a.split('.')

fori ina:

list.appent(bin(i))

print(list)

再將以上二進制拼接起來計算十進制結果,即:
              00001010 00000011 00001001 00001100 = ?

 

第二部分:MySQL數據庫(22分)

  1. MySQL中char和varchar的區別(1分)?
#Char是定長的,必須先設置字符串長度,用或不用都會佔用這麼多字節,查詢速度快

#varchar 是變長的,會根據長度自動匹配長度,查詢速度慢

 

  1. MySQL中varchar(50)的50表示什麼意思?(1分)
#Varchar的50表明最大長度的字符

 

  1. left join、right join以及inner join的區別?(2分)
#left join 左關聯,主表在左邊,右邊爲從表。若是左側的主表中沒有關聯字段,會用null 填滿

#right join 右關聯 主表在右邊和letf join相反

#inner join 內關聯只會顯示主表和從表相關聯的字段,不會出現null

 

  1. MySQL組合索引(2分)
    #組合索引abc(a,b,c) 當有多字段時用多字段組合使用
    #最左前綴
    #命中:
    #    a,ab,ac,abc
    #不命中:
    #    b,c,bc

    where子句中有a、b、c 三個查詢條件,建立一個組合索引abc(a,b,c),那麼以下那中狀況會命中索引:
       
    # a.  where (a)
    # 會命中索引
    # b.  where (b)
    # 不會命中索引
    # c.  where (c)
    # 不會命中索引
    # d.  where (a,b)
    #  會命中索引
    # e. where (b,c) #  不會命中索引 # f. where (a,c) # 會命中索引 # g. where (a,b,c) # 會命中索引

     

  1. 假設學生Student和教師Teacher關係模型以下:(4分)
            Student(學號、姓名、性別、類型、身份證號)
           Teacher(教師號、姓名、性別、類型、身份證號、工資)
    其中,學生表中類別爲「本科生」和「研究生」兩類;性別爲「男」和「女」兩類。
    a. 性別爲女的全部學生。
#select * from Student where 性別=「女」;

    b. 學生表中類別分別對應的個數。

#select  count(id)  from Student  group by 類型;

    c.工資少於10000的女教師的省份證和姓名。

#select 姓名,身份證號  from Teacher where fiter(工資<=10000);

 

    d. 研究生教師平均工資、最高和最低工資。

#select avg(工資),mini(工資),max(工資) from Teacher where 類型="研究生";

 

select max(工資)mini(工資) from Teacher on(select * from Student where 類別=「本科生」);

  1. 根據以下表結構建表:(2分)

id(自增主鍵)

name(非空)

balance(非空)

1

A

19.50

2

A

20.50

3

B

100.00

 

  1. 根據以下表查詢每一個用戶第一次下訂單的時間。(2分)

id

name

order_time

sku

1

鐵錘

2018/11/11

籃球

2

鐵錘

2018/11/12

足球

3

鋼彈

2018/11/01

電腦

4

鋼彈

2018/11/15

水杯


用戶表

   id    name   訂單id(一對多)

訂單詳情表

   訂單id      order time    sku

 

  1. 有一個訂單系統包含訂單信息、商品信息、價格信息且還要一些狀態,如何設計表結構(2分)

商品信息

      商品id  name  價格id(一對一)

價格信息

     價格id     價格

訂單信息

            商品id(一對多)    訂單id   訂單時間  訂單狀態

  1. 有以下表:(3分)
            products(商品表)    columns爲id、name、price
           orders(商城訂單表)    columns爲id、reservations_id、product_id、quantity(數量)
           reservations(酒店訂單表)    columns爲id、user_id、price、created_at
    a. 各個商品的售賣狀況,須要字段:商品名、購買總數、商品收入(單價*數量)
    b. 全部用戶在2018-01-01至2018-02-01下單次數、下單金額、商城下單次數、商城下單金額
    c. 歷月下單用戶數:下單1次的用戶數、下單2次的用戶數、下單3次及以上的用戶數
  2. 根據表寫SQL語句:(5分)
  • 查詢全部同窗的學號、姓名、班級名稱。(1分)
  • select sid name from student
  • 查詢沒有學生的全部班級。(2分)
  • 查詢有學生的全部班級的名稱和學數量。(2分)

第三部分:Django20分)

  1. 列舉你熟悉的Http協議頭以及做用。(1分)

head,post,get,option,put,delete,catch 等等….

  1. 狀態碼含義:200、30一、30二、30四、40四、500。(2分)

200狀態成功,301重定向原地址永久刪除,302重定向原地址可用,304重定向,404網頁加載失敗,500服務器錯誤

  1. 簡述cookie和session?(2分)

cookie是存放在瀏覽器上的鍵值對,用來保存用戶的狀態

session是服務器端的容器,用來保存用戶的信息,session key是隨機字符串,session依賴於cookie,把隨機字符串保存在瀏覽器上。

  1. django中get和filter的區別?(1分)

get返回對象,找不到會報錯

filter返回querset,找不到會返回None

  1. django的中間件在1.7和1.11版本間有什麼區別?(1分)

假設django有4箇中間件,

在1.7中任意中間件request有值得時候,會直接跳到最後一箇中間件執行response。

在1.11中任意中間件request有值得時候,會跳到當前中間件的response

  1. django中contenttypes組件的做用?(1分)

contenttypes是django自動建立的表裏邊有全部的app和表的對應關係,當使用一對多外鍵關聯全部表的時候就能夠用contenttypes

  1. django中Q的做用?(2分)

用來複雜的過濾信息 例如filter或 | (管道符號)

  1. 將以下SQL語句使用Django的ORM實現:(3分)
    select * from order where id >= 12

models.order.object.filter(id >= 12)
select * from order where id != 12

models.order.object.excloud(id = 12)
select * from order where id in [1,3,4]

models.order.object.exite([1,3,4])
select * from order where id between 20 and 100

models.order.object.filter(between(20 100))
select * from order where id > 20 and (num < 60 or num > 70 )
select * from orderorder by id desc,age asc

  1. 編寫查詢語句:(5分,前2個每一個1分,最後一題3分)
  • 查看全部學生,並打印姓名、班級名稱

   Student_obj=models.Student.objects.filter(name)

   Print(Student_obj.name ,Student_obj.classes__classes)

  • 查看班級名稱爲"全棧12期"的全部學生

Models.Classes.objects.filter(name="全棧12期").valuse(Student__name)

  • 查看沒有學生的全部班級ID、班級名稱

       Models.Classes.objects.filter(count(name) = 0).valuse(name,id)

  1. django中遇到複雜的SQL時ORM沒法完成,如何使用原生SQL執行?(2分)

 

第四部分:路飛學城相關(32分)

  1. 簡述restful 規範?(2分)

1 url中要表示資源2要使用https,不要使用hettp 3 url要有api標識4url要有版本信息5 url能夠過濾信息6 根據請求方式執行不一樣方法7根據請求方式不一樣返回不一樣信息8 返回錯誤信息9返回狀態碼10 超文本鏈接heaper link

  1. 簡述django rest framework的各大組件以及做用(2分)
    1. 路由  根據路由找對應視圖
    2. 視圖 用來處理邏輯相關
    3. 版本 用來過濾不一樣的版本
    4. 認證  確認用戶有沒有資格
    5. 權限 用來查看用戶有沒有權限
    6. 頻率 控制用戶頻繁訪問
    7. 解析器 用來解析用戶發來的請求
    8. 渲染器 用來渲染末班
    9. 序列化 用來前端的信息
    10. 分頁器 用來給前端返回的信息,分頁
  2. 路飛學城購物流程中爲何使用Redis?(1分)

由於redis運行在內存中查看速度快,中間狀態:訂單在提交成功後沒有必要存到數據庫,購物車中的數據就清除了。

  1. 請簡要寫出路飛學城購物流程在redis中的數據結構?以及簡述爲什麼如此設計?(2分)

pricepolicy={1:{

   id=」id」,

   有效時間:」有效時間」,

   price:」price」

},

2:{

            id=」id」,

            有效時間:」有效時間」,

            price:」price」

},

}

 

luffy_car_用戶id_課程id:{

   title:」 title 」,

   img_src : 「 圖片的地址 」,

   pricepolice:pricepolicy

}

  1. 支付寶支付時付款金額的精度?(1分)

小數點後兩位

  1. 支付寶支付時用的什麼加密?(1分)

RAF加密

  1. 支付流程中,若是用戶在支付寶頁面支付成功的同時,路飛學城服務器宕機了,用戶訂單狀態未更新,如何解決?(1分)

支付寶支付成功,服務器會在24小時以內,一直給路飛學成發信息。若是超過24小時,只能手動更改。

  1. 簡要路飛學城中課程相關的13張表以及相關之間的FK、o2o、m2m 關係(4分)
    注意:使用僞代碼表述便可。
    1. 課程大綱
    2. 課程子節點
    3. 專業課表
    4. 課程詳情表
    5. 教師表
    6. 獎學金錶
    7. 學位課表
    8. 章節
    9. 課時表
    10. 優惠券表
    11. 常見問題
    12. 價格策略
  2. 路飛學城表結構查詢(10分)
    1. 查看全部學位課並打印學位課名稱以及授課老師

list=models.學位課.object.all()

for I in list:

             i.name,i.()

  1. 查看全部學位課並打印學位課名稱以及學位課的獎學金

           models.學位課.object.filter().valuer(name,學位課對應獎學金的字段__)

 

  1. 展現全部的專題課

models.Course.object.all()

  1. 查看id=1的學位課對應的全部模塊名稱
  2. 獲取id=1的專題課,並打印:課程名、級別(中文)、why_study、what_to_study_brief、全部recommend_courses
  3. 獲取id=1的專題課,並打印該課程相關的全部常見問題

CourseObj=models.Course.object.filter(id=1)

 

  1. 獲取id=1的專題課,並打印該課程相關的課程大綱
  2. 獲取id=1的專題課,並打印該課程相關的全部章節
  3. 獲取id=1的專題課,並打印該課程相關的全部的價格策略
  4. 獲取id=1的專題課,並打印該課程相關的全部課時
  5. git相關(8分)
    1. 列舉常見的git命令?
    2. git協同開發的流程?
    3. 遇到臨時bug怎麼辦?
    4. 如何劃分分支?
    5. 如何作代碼review?
    6. git pull 和git fetch的區別?
    7. git merge 和git rebase的區別?
    8. 如何給別人的開源項目貢獻代碼?

第四部分:Linux13分)

  1. 列舉Linux常見發行版?(1分)

紅帽,烏班圖

  1. 如何獲取文件oldboy.log 的末尾兩行數據?(1分)
  2. vim中如何一次刪除光標所在行及後面2行?(1分)
  3. 如何查看當前網絡的網關地址?(1分)

ifconfig

  1. 如何過濾出文件bb中包含haha關鍵字的行,並同時顯示行號。(1分)
  2. 如何快速清空文件oldboy.log 。(1分)
  3. 如何用scp把機器10.1.1.4上/tmp/目錄下的文件file拉回到本機?(2分)
    提示:用戶名root,ssh端口號12345
  4. 如何把文件/root/xxoo的權限配置爲:屬主可讀、可寫、可執行的權限,屬組及其餘用戶沒有任何權限。(2分)
    注意:使用數字表示權限的方式進行配置
  5. 如何建立用戶alex,並指定用戶shell爲/sbin/nologin (2分)
  6. 如何刪除用戶alex (1分)

 

第五部分:附加題提示:此題是面試真題,而且在面試中常常會遇到臨時讓你來設計的題目,該題各組私下能夠進行一塊兒討論並設計。

相關文章
相關標籤/搜索