10 câu hỏi phỏng vấn hành vi phổ biến
Google đã biên soạn danh sách các câu hỏi phỏng vấn hành vi mà các nhà quản lý tuyển dụng của họ sử dụng trong các cuộc phỏng vấn.
Hãy cùng đi qua họ.
Mô tả quá trình làm việc của bạn cho ____.
Mặc dù không có câu trả lời sai cho câu hỏi này, nhưng nó có thể được sử dụng để đánh giá trải nghiệm của bạn ảnh hưởng đến cuộc sống hàng ngày của bạn như một nhà phát triển. Một câu trả lời tốt đi vào quy trình công việc, công cụ và khả năng làm việc trong một nhóm của bạn.
Hãy kể cho tôi nghe về một thời gian khi bạn mạo hiểm và thất bại.
Câu hỏi này cung cấp cái nhìn sâu sắc về cách bạn học và tiếp cận khó khăn. Một câu trả lời tốt cho thấy sự trung thực và học tập tích cực khi đối mặt với thất bại.
Một thành tựu mà bạn tự hào là gì?
Câu hỏi này được sử dụng để xây dựng các nhóm đa dạng. Google đang tìm kiếm các đặc sản, cảm giác thành công và các giá trị của bạn trong dài hạn. Một câu trả lời tốt nhìn vượt xa thành tựu và đưa ra ý nghĩa của bạn với bạn như một người.
Điều phức tạp nhất mà bạn biết rất nhiều về? Dạy tôi về nó.
Câu hỏi này xem xét các kỹ năng, kỹ năng giao tiếp của bạn và khả năng giải thích sự phức tạp cho người khác. Một câu trả lời tốt tập trung ít hơn vào thông tin và nhiều hơn vào hiệu quả của phong cách giảng dạy của bạn.
Nếu bạn tham gia, bạn sẽ tác động đến nhóm của mình như thế nào?
Câu hỏi này nhìn vào khả năng của bạn để phù hợp với người khác trong một cấu trúc. Một câu trả lời tốt cho thấy bạn đã nghiên cứu về các giá trị của Google. Câu trả lời hàng đầu nói lên các mục tiêu của Google.
Hãy cho tôi biết về một môi trường phi cấu trúc mà bạn đã làm việc.
Câu hỏi này đánh giá phong cách làm việc của bạn bằng cách xác định những gì không có cấu trúc có ý nghĩa với bạn. Một câu trả lời tốt liên quan đến kiểu máy làm việc của bạn với vị trí của bạn. Bạn có thể phù hợp với một cấu trúc được xác định trước?
Bạn muốn tôi biết gì về bạn mà chúng tôi đã thảo luận?
Câu trả lời tốt cho thấy các kỹ năng bổ sung mà bạn có có thể có lợi cho Google. Họ cũng sẽ tìm kiếm các kỹ năng mềm để xem nếu bạn có những trải nghiệm phi kỹ thuật có lợi cho đội của họ.
Công cụ Google yêu thích của bạn là gì và bạn sẽ cải thiện nó như thế nào?
Câu hỏi này đánh giá kiến thức của bạn về Google, sáng tạo và sẵn sàng ảnh hưởng đến sự thay đổi. Một câu trả lời tốt là dựa trên dữ liệu nhưng không quá kỹ thuật; Hãy chắc chắn tập trung vào lý do tại sao bạn muốn thay đổi một cái gì đó. Hãy nhớ rằng: nó sẽ làm cho mọi người sống dễ dàng hơn.
Bạn đang có ý nghĩa gì với bạn?
Câu hỏi này là một cơ hội để thể hiện sự phù hợp và giá trị văn hóa của bạn. Một câu trả lời tốt tránh được quá nhiều biệt ngữ nhưng nói lên các giá trị cơ bản của văn hóa Google.
Để biết thêm về việc trả lời các câu hỏi về Googleyness, hãy xem bài đăng trên blog của chúng tôi về các cuộc phỏng vấn hành vi của Google.
Điều gì làm bạn sợ?
Câu hỏi này có vẻ như nhìn thấy những điểm yếu và yếu tố gây căng thẳng của bạn. Một câu trả lời tốt là tự phản ánh và không chỉ đơn giản là vượt qua nỗi sợ hãi của bạn mà là hiểu chúng tác động đến bạn như một công nhân như thế nào.
Tôi đã chuẩn bị cho một vài cuộc phỏng vấn trong các công ty công nghệ/tài chính [Google, Goldman Sachs và giống nhau]. Tôi là sinh viên tiến sĩ khoa học máy tính năm cuối tại Đại học Quốc gia Singapore và bằng tiến sĩ của tôi không có nhiều thành phần lập trình. Trong khi chuẩn bị, tôi đã tập hợp một vài gợi ý để đi qua lại trước khi phỏng vấn - vì vậy khi tôi nói lời khuyên chung của tôi, ý tôi là lời khuyên để tôi nhớ. Hy vọng nó giúp. Đây là lĩnh vực đa dạng nhất của các câu hỏi có thể và một nguồn câu hỏi dễ dàng. Thật dễ dàng để hỏi và giải thích các câu hỏi liên quan đến chuỗi/mảng qua điện thoại, vì vậy việc chú ý đến phần này giúp. Người ta nên biết các thuật toán/cấu trúc sau đây, độ phức tạp của chúng, ví dụ về các ứng dụng và triển khai. Sau đây là một số loại kỹ thuật có thể sử dụng bất kỳ thuật toán/cấu trúc dữ liệu nào đã nói ở trên. Với một mảng thường bao gồm các số nguyên [hiếm khi nó có thể chỉ liên quan đến các số nguyên không âm 🙋], một subarray là một lát cắt tiếp giáp của mảng đó. Hiếm khi nó được phép trống. Bạn có thể phải tìm Subarray với số tiền tối đa [thuật toán Kadane,] hoặc sản phẩm tối đa hoặc có thể là Subarray kích thước tối thiểu có tổng lớn hơn một mục tiêu nhất định. Hầu hết các vấn đề phỏng vấn trong danh mục này có thể được giải quyết trong thời gian tuyến tính mà không cần thêm không gian. Bí quyết thường là giữ một cửa sổ của Subarray và phát triển/thu hẹp subarray tùy thuộc vào bối cảnh. Có thể bạn sẽ phảiMẹo chung
Thao tác chuỗi/mảng
Các vấn đề liên quan đến Subarray
- Bắt đầu subarray với kích thước 0 bắt đầu từ bên trái. Thông thường khi mảng được sắp xếp [hoặc phải được sắp xếp], Subarray có thể bắt đầu dưới dạng mảng đầy đủ, với hai con trỏ khi bắt đầu và kết thúc Hai giá trị cộng vào một mục tiêu].
- Giữ giá trị trả lại toàn cầu [ví dụ: tổng] và một địa phương. Thường thì bạn có thể phải giữ hai biến cục bộ [ví dụ: sản phẩm tối đa và tối đa].
Nếu nó không rõ ràng khi bắt đầu, rất có thể, nó cần giải pháp O [n²] và bạn nên bắt đầu với điều đó càng sớm càng tốt. Xem nếu bạn có thể sắp xếp mảng và sau đó giải nó bằng các đường chuyền O [n], do đó tạo ra giải pháp O [n log n] tốt hơn.
💡 Các vấn đề liên quan đến sau
Các phần tử không tiếp giáp, nhưng thứ tự của các yếu tố trong mảng ban đầu được giữ. Tìm kiếm nếu một chuỗi là một phần trăm của một chuỗi khác là hình thức dễ nhất, nhưng bạn có thể phải tìm phần tiếp theo chung dài nhất [vấn đề lập trình động mà mỗi cuốn sách giáo khoa có], sau đó tăng dài nhất hoặc sau đó là một phần sau dài nhất. Những vấn đề này thường chỉ yêu cầu bạn trả về độ dài của phần sau. Tuy nhiên, một câu hỏi tiếp theo tốt là tìm bản thân phần sau. Có thể bạn sẽ phải
- Đầu tiên rõ ràng nêu rõ sự đệ quy của giải pháp.
- Giữ bộ nhớ cache của kết quả subarray nhỏ hơn [thuật ngữ ô: lập trình động]. Trong Python, bạn có thể sử dụng bộ đệm theo phong cách trang trí hoạt động cho rất nhiều vấn đề liên quan đến bộ đệm, nhưng trong các cuộc phỏng vấn chỉ giữ một ma trận/danh sách. Xem một vòng tuyệt vời.
- Bạn nên mong đợi một giải pháp O [N²], mặc dù một số thuật toán thông minh có thể đạt được giải pháp O [n log n] bằng các kỹ thuật tìm kiếm log.
- Hãy thử xem các phương pháp tham lam có hoạt động không [chúng thường không].
Các kỹ thuật tìm kiếm log
Kỹ thuật tìm kiếm log là một thuật ngữ tôi vừa bù đắp cho các vấn đề giảm ít nhất một o [n] xuống O [log n] bằng cách đi qua một không gian tìm kiếm cắt một nửa của nó ở mỗi bước. Đối với một danh sách, không gian tìm kiếm có thể là tập hợp các chỉ mục hoặc thậm chí phạm vi của các giá trị [ví dụ: nếu các giá trị tối thiểu và tối đa của mảng được biết đến]. Hình thức phổ biến nhất là tìm kiếm nhị phân trong một mảng được sắp xếp.
Mẫu tìm kiếm nhị phân cơ bản trong PythonCác vấn đề liên quan đến khoảng thời gian
Đưa ra một tập hợp các khoảng thời gian, vấn đề thường liên quan đến việc hiểu sự chồng chéo hoặc tìm kích thước tối ưu cho một tính năng nhất định. Hầu như luôn luôn, bạn cần sắp xếp các khoảng dựa trên kết thúc [hoặc bắt đầu] của chúng, vì vậy trừ khi một vấn đề rất rõ ràng được yêu cầu, bạn có thể bắt đầu với việc cố gắng giải pháp O [n log n]. Thường thì tiếp cận tham lam làm việc sau đó. Các vấn đề ví dụ bao gồm tìm số lượng khoảng thời gian tối thiểu để loại bỏ để làm cho phần còn lại không chồng chéo và số lượng mũi tên tối thiểu cần thiết để nổ bóng trong 2D.
Thao tác số
Hầu hết các vấn đề liên quan đến số là từ toán học rời rạc hoặc thao tác bit.
- Số học mô -đun.
- Nghịch đảo nhân mô -đun [khi mô đun là nguyên tố].
- Thao tác bit bằng cách sử dụng các toán tử.
Kỹ thuật thao tác bit
Unless you are a natural and/or have done intense practice, it is pretty hard to do correct bit manipulation without help from a compiler. Nonetheless, at least know very basic definitions and tricks using bit wise [different from usual] AND [&], OR [|], and most importantly XOR [^] and bit-shift [>]. Basic should-know tips [n being the number] include
- N & [N-1] chuyển đổi bit tập hợp cuối cùng.
- n^n hủy bỏ tất cả các bit theo cặp. Nó thường hữu ích khi hủy sao chép [ví dụ: tìm số duy nhất]. Tuy nhiên, thủ thuật này thường có thể thoát ra khỏi tầm tay [ví dụ: tìm số đơn khi mọi yếu tố khác xuất hiện ba lần].
- Sử dụng giá trị mặt nạ để tìm ra bit đã đặt ở một số chỉ số nhất định hoặc giới hạn số nguyên ở mức 32 bit [đặc biệt là trong Python].
- Cụ thể, N & 1 là đúng khi và chỉ khi N là lẻ.
Xem một vòng tròn điên rồ ở đây.
Một số khu vực khác
Các vấn đề liên quan đến xác suất cơ bản là khá phổ biến. Mặc dù hầu hết các cuộc phỏng vấn lập trình không yêu cầu các câu đố xác suất [vị trí số lượng trong các tổ chức tài chính có thể làm], người ta nên biết lấy mẫu hồ chứa, bộ lọc nở hoa và các thuật toán xác suất định hướng dữ liệu tương tự.
Lời khuyên Python thông thường sẽ có ích
Lists:
- Danh sách Python có thể được sử dụng để thực hiện mảng, ngăn xếp, xếp hàng ngay ngoài kệ. Có một mô -đun hàng đợi tốt hơn, nhưng hãy gắn bó với các cấu trúc dữ liệu cơ bản trong phỏng vấn nhiều nhất có thể.
- Bạn có thể lặp lại cả phía trước và phía sau của một danh sách một cách dễ dàng, ngay cả với một bước nhảy tùy chọn. Nó không bao giờ đạt đến điểm dừng, vì vậy bạn có thể nghĩ về phạm vi là [bắt đầu, dừng lại] với hop. Nếu bắt đầu> Dừng, trả về danh sách trống.
- Cắt một danh sách một cách dễ dàng với đại tràng [:] toán tử. Nó tạo ra một bản sao mới của lát cắt, vì vậy hãy cẩn thận về sự phức tạp không gian.
- Sử dụng danh sách hiểu, nhưng không phức tạp [theo hướng dẫn kiểu Google Python].
- Chuỗi là kiểu danh sách kỹ thuật, nhưng chúng là bất biến. Vì vậy, lặp lại và cắt lát hoạt động nhưng không nối/pop, v.v.
Dictionary:
- Cấu trúc dữ liệu từ điển Python cũng hữu ích trên toàn cầu. Nó hoạt động ngoài hộp như một hashmap xuất sắc.
- Sử dụng DefaultDict từ các bộ sưu tập để lưu một số giá trị khởi tạo thời gian phỏng vấn cho các khóa mới.
- Để tạo một hashmap của các phần tử của chuỗi hoặc danh sách [một số lần lặp khác cũng sẽ hoạt động], sử dụng bộ đếm từ các bộ sưu tập. Đây là những kỹ thuật đơn giản để lưu một vài dòng dễ bị lỗi khi thời gian là cần thiết. Thận trọng: Hãy cẩn thận về việc đi qua một quầy, một số chức năng từ Dict thông thường có thể không hoạt động.
Loops:
- Các vòng lặp trong Python giống như các ngôn ngữ khác, nếu không dễ dàng hơn. Bạn sử dụng trong khi và cho vòng lặp, nhưng hãy cố gắng chỉ sử dụng cho vòng lặp, vì thiếu để tăng bộ đếm là một sai lầm phổ biến. Luôn thúc đẩy mức tăng càng muộn càng tốt [xem dòng 4 trong đoạn mã sau].
- Không đặt quá nhiều câu lệnh hoàn trả bên trong một vòng lặp [một lần nữa, Hướng dẫn kiểu Google] và luôn luôn kiểm tra xem một lần trả lại cuối cùng có cần thiết không sau khi bạn vừa kết thúc vòng lặp.
- Sử dụng phá vỡ/tiếp tục, chúng rất hữu ích. Break sẽ đưa bạn ra khỏi vòng lặp vì tiếp tục sẽ ném bạn trở lại bất biến vòng lặp. Bạn không cần phải sử dụng vượt qua nhiều.
- Python có một tuyên bố dễ thương khác sau vòng lặp, thực hiện nếu bạn hoàn thành vòng lặp bình thường [giả sử, không bị phá vỡ]. Điều này có thể rất hữu ích cho việc mã hóa tốc ký, nhưng hãy đề cập đến điều này với người phỏng vấn, nó trông giống như một phần của sự thay đổi nếu bị lỗi.
Cấu trúc dữ liệu cơ bản:
- Danh sách được liên kết và cây nhị phân là cấu trúc dữ liệu phổ biến nhất bạn cần trong một cuộc phỏng vấn. Thật đơn giản để thực hiện chúng trong Python.
- Mặc dù các vòng lặp rất hữu ích để lặp qua một danh sách được liên kết hoặc đi qua một cây [ví dụ: trong khi Node.next không phải là không].
- Một biểu đồ thường được biểu diễn như một danh sách kề hàng về từ điển Python. Đối với các biểu đồ không mong muốn, cùng một cạnh sẽ được tính hai lần.
- Tìm kiếm đầu tiên và chiều sâu đầu tiên hoàn toàn đơn giản trong Python bằng cách sử dụng hàng đợi và một ngăn xếp tương ứng. Kiểm tra một vòng tròn tuyệt vời.
Quy tắc Python ngẫu nhiên
- Sử dụng Float [Inf Inf] và Float [Hồi-Inf] để khởi tạo giá trị lớn hơn và nhỏ hơn.
- Cách Python kiểm tra giá trị trống rỗng/không/không/không rõ ràng. Ví dụ: nếu không phải x: sẽ đánh giá đúng với X là một danh sách trống, không, 0 và một số khác. Mặc dù cú pháp này được khuyến nghị, hãy đi với cú pháp rõ ràng [ví dụ: x! = 0 :] Nếu bạn thậm chí hơi không chắc chắn.
- Trong các trường hợp thông thường, so sánh hai biến có thể được thực hiện theo hai cách: a == b hoặc a là b. Chúng phục vụ các mục đích khác nhau [đọc lên chuỗi thực tập để biết thêm], do đó để tránh sự nhầm lẫn, sử dụng A == B khi so sánh các giá trị của các biến. Tuy nhiên, nếu X không phải là cách khá chấp nhận để kiểm tra xem một biến được đặt thành không.
Bất kỳ đề nghị là nhiều hơn chào mừng!