首頁 » 面試題庫 » 後端 » 初級(Junior) – 後端工程師面試問題彙總-20240515

最近OpenAI推出了GPT-4o模型,用AI整理了些後端工程師在技術面試時可能會遇到的問題。依等級分為入門級(Beginner)、初級(Junior)、中級(Intermediate)及高級(Senior),也有分散式任務及身份驗證機制專章。答案僅供參考,請搭配其他資料服用。

初級(Junior)

1. 如何在Django中建立一個新模型(Model)?

步驟:

  • 創建模型:在應用文件夾中的models.py文件中創建一個Python類來定義模型。這個類需要繼承django.db.models.Model
  • 定義字段:使用Django提供的字段類型來定義模型的屬性。
  • 運行遷移:創建並應用數據庫遷移,使這些模型反映到資料庫中。

具體代碼示例

# myapp/models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13, unique=True)

    def __str__(self):
        return self.title

接著,我們需要運行以下命令生成並應用遷移:

python manage.py makemigrations
python manage.py migrate

2. 什麼是ORM,Django的ORM如何操作數據庫?

  • ORM(Object-Relational Mapping)是一種將對象映射到資料庫表的技術,使開發者可以使用面向對象的方式來操作資料庫,而不必寫原始的SQL語句。
  • Django的ORM操作數據庫

新增

from myapp.models import Book

# create a new book
book = Book(title='Django for Beginners', author='William S. Vincent', published_date='2020-05-05', isbn='1234567890123')
book.save()

查詢

# get a book by title
book = Book.objects.get(title='Django for Beginners')

# filter books
books = Book.objects.filter(author='William S. Vincent')

更新

# update a book's title
book.title = 'Advanced Django'
book.save()

刪除

# delete a book
book.delete()

3. 請描述如何在Django中進行簡單的用戶認證?

Django內置的用戶認證系統提供了處理用戶註冊、登錄和註銷等功能的簡便方式。

設置URL:在urls.py中設置登錄和登出的URL。

from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]

創建模板:創建對應的登錄模板login.html。

<!-- templates/login.html -->
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Login</button>
</form>

登錄和登出視圖:Django內置的視圖LoginView和LogoutView。

保護視圖:使用裝飾器@login_required來保護需要用戶登錄的視圖。

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

4. 什麼是Cookie和Session,有哪些區別?

  • Cookies
    • 是保存在客戶端的數據(如瀏覽器中)。
    • 通過HTTP headers在伺服器和客戶端之間傳遞。
    • 用於存儲用戶偏好、跟踪用戶行為等臨時但持久性的信息。
  • Sessions
    • 是保存在伺服器端的數據。
    • 通過Session ID與伺服器的數據記錄相鏈接。
    • 用於存儲與某個特定客戶端相關的臨時數據,如用戶登錄狀態。
  • 區別
    • 存儲位置:Cookies存儲在客戶端,Sessions存儲在伺服器端。
    • 存儲大小:Cookies通常較小(4KB),而Sessions可以存儲更大量的數據。
    • 安全性:Cookies能被更容易地訪問和篡改,Sessions更安全,但需要依賴伺服器存儲。

5. 請解釋NoSQL資料庫與關係型資料庫的主要區別。

  • 數據結構
    • 關係型資料庫:使用表格(行和列)來組織數據。每張表通常具有預定義的結構,支持SQL查詢語言。
    • NoSQL資料庫:使用各種靈活的數據模型,如鍵-值、文檔、列族和圖形。不必預先定義結構。
  • 擴展性:
    • 關係型資料庫:通常是垂直擴展,即增加更多的CPU、RAM來提高性能。
    • NoSQL資料庫:通常是水平擴展,即通過增加更多的節點來分散存儲和負載。
  • ACID vs. BASE:
    • 關係型資料庫:遵循ACID(原子性、一致性、隔離性、持久性)屬性來確保持久性和一致性。
    • NoSQL資料庫:通常遵循BASE(基本可用性、狀態軟性、一致性最終)模型,強調可用性和可擴展性,有時會放鬆一致性約束。
  • 用例:
    • 關係型資料庫:適合需要嚴格一致性和複雜查詢的應用,如財務系統。
    • NoSQL資料庫:適合需要高性能、迅速擴展和能處理多種數據類型的應用,如社交媒體、物聯網等。


One Reply to “初級(Junior) – 後端工程師面試問題彙總-20240515”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *