Có lẽ an toàn khi cho rằng Git đã trở thành một phần thiết yếu của bất kỳ công ty nào nhằm mục đích duy trì triết lý DevOps. Ngay cả khi bạn không quan tâm đến kỹ thuật phần mềm, Git có lẽ là công cụ hữu ích nhất khi nói đến quản lý dự án - nó là thành phần quan trọng để làm việc nhóm thành công và đạt được mục tiêu. Hầu hết các công ty dựa vào dự án yêu cầu nhân viên của họ phải biết cách sử dụng các công cụ khác nhau mà Git cung cấp. Trong hướng dẫn này, bạn sẽ tìm thấy các câu hỏi phỏng vấn Git thường được hỏi nhất - chúng sẽ giúp bạn chắc chắn một vị trí công việc trong một công ty công nhận Git vì tính năng tuyệt vời đó!
Chúng ta sẽ nói về thông tin cơ bản và sau khi cả hai cùng chung cách hiểu, hãy chuyển sang các phiên bản câu hỏi mang tính kinh nghiệm hơn của chính các câu hỏi cơ bản đó. Mặc dù Git là một công cụ tuyệt vời, nhưng nó có một quá trình học tập khá khó, vì vậy hãy mang tư duy của bạn vào và bắt đầu!
Mục lục
- 1. Vì sao các câu hỏi phỏng vấn Git cơ bản lại quan trọng?
- 1.1. Câu hỏi 1: Git là gì?
- 1.2. Câu hỏi 2: Sư khác nhau giữa "bare repository" và "working directory" là gì?
- 1.3. Câu hỏi 3: Sự khác biệt giữa 'fork' và 'branch' là gì?
- 1.4. Câu hỏi 4: Bạn đã tạo một cam kết và đẩy nó, nó được công khai. Tuy nhiên, bạn nhận thấy rằng vẫn có những thứ cần phải thay đổi. Bạn có thể làm như vậy trong giai đoạn cam kết này không? Và nếu có, làm thế nào?
- 1.5. Câu hỏi 5: "cherry-picking" là gì?
- 1.6. Câu hỏi 6: "stash" là gì?
- 1.7. Câu hỏi 7: Git 'stash drop' là gì?
- 1.8. Câu hỏi 8: Làm thế nào để bạn giải quyết "conflicts" trong Git?
- 1.9. Câu hỏi 9: Ngôn ngữ nào được sử dụng trong Git?
- 1.10. Câu hỏi 10: "pull request" là gì?
- 1.11. Câu hỏi 11: Cách hiệu quả nhất để tìm ra một cam kết xấu là gì?
- 1.12. Câu hỏi 12: Bạn có biết sự khác biệt giữa Git và GitHub là gì không?
- 1.13. Câu hỏi 13: Bạn có thể kể tên các dịch vụ lưu trữ kho Git khác không?
- 1.14. Câu hỏi 14: Bạn có biết ‘commit object’ chứa những gì không?
- 1.15. Câu hỏi 15: Bạn có thấy bất kỳ lợi ích nào khi sử dụng Git không?
- 2. Câu hỏi phỏng vấn Git nâng cao
- 2.1. Câu hỏi 1: "head" là gì?
- 2.2. Câu hỏi 2: 'Git CONFIG' được sử dụng để làm gì?
- 2.3. Câu hỏi 3: Cam kết bị hỏng có thể sửa được không?
- 2.4. Câu hỏi 4: Sự khác biệt giữa "get" và "pull" là gì?
- 3. Kết luận
Vì sao các câu hỏi phỏng vấn Git cơ bản lại quan trọng?
Để bắt đầu mọi thứ đúng hướng, chúng ta sẽ bắt đầu với việc đề cập đến một số lệnh Git cơ bản, phổ biến và các câu hỏi phỏng vấn Git. Rất nhiều người có xu hướng bỏ qua và vội vàng gạt bỏ những điều cơ bản khi chuẩn bị cho cuộc phỏng vấn xin việc - việc này không nên xảy ra! Tôi đoán điều này là hiển nhiên khi bạn mới bắt đầu tìm hiểu về Git và cách sử dụng nó. Tuy nhiên, ngay cả khi bạn đã là người dùng Git có kinh nghiệm, bạn cũng không nên bỏ qua thông tin cơ bản. Tại sao như vậy?
Ưu đãi mới nhất đang hoạt động ngay bây giờ:
GET 50% OFF
DataCamp Black Friday Sale
During this DataCamp Black Friday, you can access the top-rated courses with a 50% discount. Enroll now for way less!
Bạn thấy đấy, khi mọi người nghiên cứu các câu hỏi phỏng vấn Git, họ thường không nghĩ về thời điểm của cuộc phỏng vấn. Chắc chắn, bạn có thể tưởng tượng ra tình huống và những câu hỏi mà bạn sẽ được hỏi, nhưng có một điều mà nhiều người không nhận ra (thường xuyên hơn không) là sẽ có rất nhiều sự căng thẳng liên quan. Sự căng thẳng dẫn đến hoảng loạn, do đó có thể dẫn đến việc bạn quên ngay cả những thông tin cơ bản nhất về Git - đặc biệt nếu bạn không thực hành nó trước.
Vâng, chúng ta đã thiết lập lý do tại sao các câu hỏi phỏng vấn cơ bản trên Git lại quan trọng, hãy chuyển sang chính các câu hỏi thực tế đó.
Câu hỏi 1: Git là gì?
Hãy đối mặt - bạn có thể thấy điều này sắp tới.
Thật khó để tưởng tượng rằng nhà tuyển dụng tiềm năng của bạn có thể hỏi bạn điều gì khác để làm một trong những câu hỏi phỏng vấn Git đầu tiên. Với câu hỏi này, bạn có thể tạo ấn tượng chung về trình độ kiến thức của mình và những người phỏng vấn bạn sẽ biết những gì họ mong đợi từ phần còn lại của cuộc phỏng vấn xin việc.
Vậy, Git là gì?
Git là một phần của công nghệ được thiết kế để theo dõi và ghi nhật ký các thay đổi và chỉnh sửa trong bất kỳ loại tệp máy tính nào, đặc biệt khi nói đến những tệp được sử dụng bởi nhiều hơn một hoặc hai người (ví dụ, một công ty). Nói cách khác, các công ty sử dụng Git để quản lý quy trình làm việc và theo dõi tiến độ của họ với các dự án khác nhau. Công nghệ này chủ yếu được sử dụng trong kỹ thuật phần mềm, nhưng rất nhiều công ty trên thế giới - những công ty không liên quan gì đến phần mềm - đã áp dụng Git vào quy trình làm việc của họ. Nó đặc biệt phổ biến (và cũng quan trọng) cho các nhà phát triển và lập trình - nó là một trong những công cụ thiết yếu nhất cho các công ty cố gắng đạt được và duy trì triết lý DevOps.
Câu hỏi 2: Sư khác nhau giữa "bare repository" và "working directory" là gì?
Một mẫu template rất phổ biến cho các câu hỏi phỏng vấn Git, so sánh là thứ mà bạn có nhiều khả năng gặp trong cuộc phỏng vấn xin việc của mình. Cách tốt nhất để giải thích chúng là giữ cho câu trả lời của bạn ngắn gọn và đi vào trọng tâm, nhưng đồng thời cố gắng thể hiện rằng bạn hiểu cặn kẽ về những gì bạn đang nói.
Một bare repository (kho lưu trữ trống), như tên của nó, không chứa bất kỳ tệp đang hoạt động nào được sử dụng trong Git. Không có thư mục con, không có kiểm soát phiên bản - chỉ là một mẫu template không. Mặt khác, một working directory (thư mục làm việc) chứa tất cả các thứ ở trên - các tệp làm việc (và lịch sử thay đổi của chúng), các thư mục con, v.v... Bạn có thể nói rằng hai khu vực này đối lập nhau.
Câu hỏi 3: Sự khác biệt giữa 'fork' và 'branch' là gì?
Một trong những câu hỏi phỏng vấn Git rất phổ biến, nhà tuyển dụng tiềm năng có thể yêu cầu bạn so sánh hai khái niệm hoặc thậm chí có thể chỉ mô tả một trong số chúng.
Khái niệm "fork" không phải là duy nhất hoặc dành riêng cho Git. Bạn có thể tìm thấy fork trong rất nhiều lĩnh vực mà bạn tìm kiếm. Một ví dụ điển hình về điều này là fork trong tiền điện tử - những thay đổi lớn trong cách thức hoạt động của các loại tiền điện tử cụ thể. Tuy nhiên, trong Git, fork ít gây tranh cãi hơn nhiều, với công nghệ được sử dụng trong các tình huống ổn định, “indoor”.
Trong Git, fork là một bản sao của một kho lưu trữ hoàn toàn tách biệt với bản gốc. Tuy nhiên, branch là thứ được sử dụng để thay đổi các phần nhất định của chương trình (từ khía cạnh phát triển), sau đó hợp nhất các thay đổi với lõi sau đó.
Một cách tốt để xem xét nó là trong khi fork giống như xáo trộn vẻ bên ngoài của một chiếc xe, còn branch giống như thay lốp xe.
Câu hỏi 4: Bạn đã tạo một cam kết và đẩy nó, nó được công khai. Tuy nhiên, bạn nhận thấy rằng vẫn có những thứ cần phải thay đổi. Bạn có thể làm như vậy trong giai đoạn cam kết này không? Và nếu có, làm thế nào?
Có lẽ một số câu hỏi phỏng vấn Git phổ biến nhất hiện có, đó là những câu hỏi yêu cầu bạn tưởng tượng một tình huống hoặc kịch bản nhất định và sau đó nói với người phỏng vấn cách bạn sẽ giải quyết nó. Các nhà tuyển dụng thích loại câu hỏi phỏng vấn Git này vì chúng thường cung cấp cho bạn các tình huống với các ví dụ thực tế mà chính nhà tuyển dụng đã trải qua.
Để trả lời câu hỏi - có, bạn vẫn có thể thay đổi mọi thứ, ngay cả khi bạn đã đẩy cam kết và công khai nó. Cách để thực hiện việc này là sử dụng lệnh git revert. Đây là một trong những lệnh Git phổ biến nhất và được nhiều nhà phát triển sử dụng hàng ngày.
Những gì lệnh sẽ làm là nó sẽ hoạt động như một "bản vá" cho cam kết mà bạn chỉ định cần được thay đổi. Bằng cách này, ngay cả khi bạn đã bỏ lỡ điều gì đó trước khi triển khai cam kết cho phiên bản trực tiếp, bạn vẫn có thể thay đổi và khắc phục mọi thứ sau đó.
Câu hỏi 5: "cherry-picking" là gì?
Đây có thể là một trong những câu hỏi phỏng vấn Git khó trả lời hơn vì không có nhiều người xem xét nó. Như một thuật ngữ, cherry-picking là tất cả những gì thường được sử dụng giữa các nhà phát triển (ít nhất là khi so sánh với các thuật ngữ cơ bản khác là “branch” hoặc “commit”).
Cherry-picking xảy ra khi bạn quyết định chọn một số loại cam kết (commit) từ một nhánh (branch) dựa trên Git và sau đó áp dụng các tính năng của nó cho một số nhánh khác. Giờ bạn thắc mắc tại sao điều này được gọi là “cherry-picking” (hái cherry)? Đơn giản - hầu hết các lệnh Git khác dựa trên chuyển giao cam kết được thiết kế để sao chép nhiều cam kết cùng một lúc. Với cherry-picking, bạn chọn một cam kết cụ thể mà bạn muốn áp dụng cho một số chi nhánh khác.
Câu hỏi 6: "stash" là gì?
Trong Git, stash (kho lưu trữ) là một số tính năng được yêu thích nhất bởi cả nhà phát triển và người quản lý. Cách hoạt động của nó là bạn chỉ cần ném bất kỳ thứ gì bạn đang làm vào stash và nhanh chóng chuyển sang phần khác của dự án mà không sợ rằng bạn sẽ mất bất kỳ tệp nào. Stash hoạt động như một đơn vị lưu trữ - nó lưu dự án của bạn và tất cả các tính năng liên quan, giúp bạn có thể quay lại và tiếp tục làm việc từ nơi bạn đã dừng lại.
Câu hỏi 7: Git 'stash drop' là gì?
Đây là một lệnh để sử dụng sau khi bạn hoàn thành với mục đã lưu trữ hoặc bạn muốn xóa nó khỏi danh sách. Nó có thể xóa một mục cụ thể nếu bạn bao gồm một đối số hoặc nó có thể xóa mục lưu trữ được thêm mới nhất theo mặc định.
Câu hỏi 8: Làm thế nào để bạn giải quyết "conflicts" trong Git?
Đây là một trong những câu hỏi phỏng vấn Git thông minh hơn vì nó đóng vai trò như một câu hỏi kép - để có thể trả lời chính xác, trước hết bạn cần biết conflict (xung đột) là gì.
Nếu bạn làm việc trên một cam kết và cuối cùng quyết định hợp nhất nó, nó sẽ kiểm tra bất kỳ thay đổi trùng lặp nào có thể có trong cam kết hiện đang diễn ra. Trong trường hợp tìm thấy các bản sao như vậy, Git sẽ đưa ra conflict - điều này được thực hiện vì Git không quyết định thay đổi nào là phù hợp và thay đổi nào nên bị loại bỏ. Nếu bị bỏ qua, việc này có thể ảnh hưởng đến dự án của bạn theo cách rất tiêu cực - điều này làm cho quyết định giải quyết xung đột của Git trở thành một điều tốt.
Có các lệnh Git phổ biến được sử dụng để giải quyết xung đột (chẳng hạn như git add và git commit). Sau khi đưa ra, Git sau đó sẽ sắp xếp các cam kết theo thứ tự và hoàn thành công việc.
Câu hỏi 9: Ngôn ngữ nào được sử dụng trong Git?
Một trong những câu hỏi phỏng vấn Git mà bạn có thể mong đợi nhận được câu hỏi tiếp theo, vì vậy bạn nên chuẩn bị trước.
Rất đơn giản, Git sử dụng ngôn ngữ “C”. Câu hỏi tiếp theo có thể nhất sẽ là “tại sao?”. Đơn giản vì ngôn ngữ “C” cho phép Git cực kỳ nhanh - điều mà rất khó đạt được với một số ngôn ngữ lập trình bậc cao hơn.
Câu hỏi 10: "pull request" là gì?
Bạn có thể chắc chắn rằng đây sẽ là một thuật ngữ liên quan đến Git mà bạn sẽ nghe và sử dụng rất nhiều, đặc biệt là trong các câu hỏi phỏng vấn Git.
Trong khi một branch (nhánh) là một phiên bản khác của mã, một pull request (yêu cầu kéo) là khi bạn lấy một kho lưu trữ và sau đó chuyển nhánh của bạn ra khỏi nó. Sau đó, bạn thực hiện một số thay đổi và cố gắng hợp nhất nhánh trở lại dự án chính. Vì lý do rõ ràng, các yêu cầu kéo phải được chấp thuận bởi các thành viên khác có liên quan đến dự án.
Câu hỏi 11: Cách hiệu quả nhất để tìm ra một cam kết xấu là gì?
Mặc dù bạn có thể thực hiện mọi cam kết trong khi cố gắng tìm ra nguyên nhân gây ra sự cố cho bạn, nhưng không ai làm điều đó. Đó là vì có một lệnh cho phép bạn sắp xếp thông qua các cam kết một cách nhanh chóng và dễ dàng, giúp quá trình tìm kiếm nhanh hơn và trôi chảy hơn nhiều.
Lệnh đó là git bisect.
Câu hỏi 12: Bạn có biết sự khác biệt giữa Git và GitHub là gì không?
Chúng ta đã biết Git là một hệ thống kiểm soát phiên bản có tính chất phân tán được sử dụng để theo dõi các thay đổi trong mã nguồn trong quá trình phát triển phần mềm. Nó có thể được sử dụng để theo dõi bất kỳ thay đổi nào trong bất kỳ tập hợp tệp nào.
Điều quan trọng trong các câu hỏi phỏng vấn Git cần biết là GitHub, mặt khác, là một dịch vụ lưu trữ kho Git cung cấp giao diện đồ họa dựa trên web. Nó cung cấp các công cụ quản lý tác vụ cho các dự án, kiểm soát truy cập và các tính năng cộng tác.
Câu hỏi 13: Bạn có thể kể tên các dịch vụ lưu trữ kho Git khác không?
Câu trả lời cho câu này sẽ là:
- Pikacode
- GitEnterprise
- SourceForge.net
- Visual Studio trực tuyến
Câu hỏi 14: Bạn có biết ‘commit object’ chứa những gì không?
- Một tập hợp các tệp đại diện cho trạng thái của một dự án.
- Tham chiếu đến "đối tượng cam kết" bố mẹ.
- Tên SHAI là chuỗi ký tự gồm 40 ký tự xác định duy nhất đối tượng cam kết.
Câu hỏi 15: Bạn có thấy bất kỳ lợi ích nào khi sử dụng Git không?
Các gợi ý là:
- Hợp tác thân thiện;
- Có sẵn cho bất kỳ loại dự án nào;
- Tính khả dụng cao;
- Dự phòng và nhân rộng dữ liệu dễ dàng;
- Sử dụng đĩa và hiệu suất mạng;
- Một thư mục Git cho mỗi kho lưu trữ.
Câu hỏi phỏng vấn Git nâng cao
Vừa nãy chúng ta đã đề cập đến một số câu hỏi phỏng vấn cơ bản phổ biến nhất trên Git, chúng ta có thể chuyển sang những thứ nâng cao hơn. Tôi sẽ cung cấp cho bạn một vài ví dụ về một số câu hỏi phỏng vấn Git nâng cao thường được hỏi nhất - tuy nhiên, hãy nhớ rằng có rất nhiều câu hỏi trong số đó mà bạn có thể được hỏi. Mặc dù hầu như không thể bao gồm tất cả các phiên bản có thể có của những câu hỏi này trong hướng dẫn này, nhưng những phiên bản bạn sẽ tìm thấy trước mắt sẽ cung cấp cho bạn một ý tưởng khá tốt về những gì mong đợi.
Câu hỏi 1: "head" là gì?
Mặc dù không được sử dụng phổ biến như một số thuật ngữ khác trong hướng dẫn này, head trong Git được sử dụng để chỉ đối tượng của một cam kết. Mỗi đầu được đặt trong các kho và mỗi kho có một phần đầu mặc định được gọi là “Master”. Ngoài phần đầu mặc định, một kho lưu trữ có thể có nhiều phần đầu khác nhau cùng một lúc.
Câu hỏi 2: 'Git CONFIG' được sử dụng để làm gì?
Điều quan trọng là phải biết các lệnh trong khi cố gắng hoàn thành các câu hỏi phỏng vấn Git. Lệnh git config là một lệnh có thể được sử dụng để định cấu hình hầu hết các tùy chọn mà bạn sẽ cần khi sử dụng Git. Cho dù đó là thông tin người dùng hay cách thức hoạt động của kho lưu trữ - nó trở thành một phương pháp cấu hình rất tiện lợi.
Câu hỏi 3: Cam kết bị hỏng có thể sửa được không?
Vâng, chúng có thể. Cách bạn có thể thực hiện để sửa lỗi cam kết bị hỏng là sử dụng lệnh git commit - amend. Lệnh này sẽ tìm cam kết bị hỏng và khôi phục chức năng của nó, xóa thông báo lỗi trong quy trình.
- Dễ sử dụng
- Cung cấp nội dung chất lượng
- Minh bạch giá cả
- Chứng chỉ miễn phí sau hoàn thành
- Tập trung vào các kỹ năng khoa học dữ liệu
- Thời gian học tập linh hoạt
- Thiết kế đơn giản (không có thông tin không cần thiết)
- Khóa học chất lượng cao (ngay cả khóa miễn phí)
- Đa dạng tính năng
- Chương trình nanodegree
- Phù hợp với doanh nghiệp
- Chứng chỉ hoàn thành trả phí
- Được tạo dựng tốt trong ngành
- Đa dạng các tính năng để lựa chọn
- Các khóa học trình độ đại học
- Các khóa học trình độ đại học
- Phù hợp với doanh nghiệp
- Trả phí cho chứng chỉ hoàn thành
Câu hỏi 4: Sự khác biệt giữa "get" và "pull" là gì?
Khi bạn “kéo” (pull) dữ liệu, nó sẽ được tải xuống và sau đó được hợp nhất ngay lập tức với các tệp đang làm việc hiện tại của bạn. Ngược lại với điều đó, "lấy" (getting) dữ liệu là cách để thực hiện nếu bạn muốn tải xuống nhưng chưa hợp nhất các tệp.
Bạn có biết?
Bạn đã bao giờ băn khoăn nền tảng học online nào tốt nhất cho sự nghiệp của bạn chưa?
Kết luận
Vậy là - chúng ta đã đến phần cuối của hướng dẫn "Câu hỏi phỏng vấn Git". Cho đến thời điểm này, chúng ta biết Git là gì và đã đề cập đến một phần lớn câu hỏi cơ bản có thể bạn nhận được trong cuộc phỏng vấn xin việc, cũng như một số phiên bản nâng cao đáng chú ý hơn của câu hỏi.
Cố gắng đừng quá căng thẳng và dồn hết tâm trí vào việc học Git. Trong suốt cuộc phỏng vấn, chỉ cần thư giãn và cố gắng trả lời phần lớn các câu hỏi mà bạn nhận được một cách rõ ràng, trọng tâm. Hãy trình bày chi tiết nếu bạn cảm thấy thích hoặc nếu nó phù hợp với câu hỏi - nhà tuyển dụng tiềm năng sẽ đánh giá cao điều đó.
Tôi hy vọng bạn thấy những câu hỏi phỏng vấn Git và câu trả lời này hữu ích, và tôi chúc bạn thành công nhất trong cuộc phỏng vấn xin việc của mình!