Hướng dẫn can i use python for google coding interview? - tôi có thể sử dụng python cho cuộc phỏng vấn mã hóa google không?


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.

Mẹo chung

  • Xem các mẹo phỏng vấn kỹ thuật tuyệt vời từ các kỹ sư của Google và các mẹo phỏng vấn từ các nhà tuyển dụng của Google. Không có nhiều công ty mất nhiều nỗ lực này để làm rõ quá trình phỏng vấn của họ.
  • Thực hiện theo khóa học Udacity để chuẩn bị cho cuộc phỏng vấn kỹ thuật bằng Python. Khóa học này là phiên bản toàn diện của các chi tiết kỹ thuật mà chúng tôi sẽ thảo luận ở đây.
  • Đọc những lời khuyên rất ngắn gọn của Philip J. Guo và có lẽ lang thang trên internet một số nữa.
  • Không mở các liên kết từ các bài báo nhấp vào BAIT [ví dụ: từ BusinessInsider và Forbes].
  • Hướng dẫn toàn diện nhất đối với thực hành lập trình là Đại học phỏng vấn Google. Hãy nghĩ về nó như một tài liệu tham khảo, không bị choáng ngợp bởi nó. Các tài nguyên cho các câu hỏi thiết kế hệ thống là khá tốt ở đó.
  • Tôi đã sử dụng Python làm sở thích đầu tiên của tôi. Một số người googlers đề nghị sử dụng C ++/Java, nhưng quyết định nhất trí là: Chọn ngôn ngữ bạn cảm thấy thoải mái nhất, trừ khi mô tả công việc có yêu cầu. Một huấn luyện viên phỏng vấn chính thức từ Google đảm bảo rằng Python vẫn ổn và thường giúp truyền đạt sự hiểu biết cơ bản nhanh hơn trong một cuộc phỏng vấn.
  • Bám sát một nền tảng thực hành phỏng vấn và làm các vấn đề triệt để. Tôi đánh giá cao LeetCode. Không sử dụng các nền tảng tập trung vào các cuộc thi lập trình. Nếu bạn đang thực hành để phỏng vấn qua điện thoại, hãy sử dụng Google Docs để thực hành và sau đó sao chép dán vào nền tảng [hoặc biên tập viên cá nhân của bạn]. Đối với phỏng vấn trực tiếp [cả hangout và tại chỗ], thực hành lập trình trên bảng trắng. Nó thất vọng lúc đầu, nhưng cũng giúp ích rất nhiều. Nếu bạn có một trình soạn thảo ưa thích với Lining Code, AutoClete và những gì không, đừng mở nó cho đến khi phỏng vấn.
  • Trong cuộc phỏng vấn, đặt câu hỏi và làm rõ mọi điều cho dù nhỏ đến đâu. Xác nhận các giả định về cấu trúc dữ liệu và độ phức tạp trước. Trong tài liệu này, bất cứ khi nào bạn thấy, nó đưa ra một ví dụ về bối cảnh mà việc đặt câu hỏi cho người phỏng vấn là phổ biến.
  • Thực hành mọi vấn đề như thể đó là một cuộc phỏng vấn. Giải quyết chúng ngay càng sớm càng tốt không phải là mục tiêu [trái với các cuộc thi lập trình], giao tiếp là chìa khóa. Đừng từ bỏ việc từ bỏ chính mình. Xem các giải pháp của tôi cho một số vấn đề LeetCode, mỗi vấn đề được giải quyết như thể đó là một cuộc phỏng vấn. Mỗi tập tin có các chi tiết được viết dưới dạng bình luận.
  • Bắt đầu với việc liệt kê các ví dụ sẽ bao gồm hầu hết các trường hợp cạnh, cực đoan và phổ biến.
  • Một vài loại vấn đề là phổ biến trên tất cả các nền tảng, sách và video liên quan đến phỏng vấn [có thể ngụ ý chúng cũng phổ biến trong các cuộc phỏng vấn]. Bốn loại vấn đề chính mà người ta nên tập trung là: 1. Thao tác chuỗi/mảng, 2. Cấu trúc cây, 3. Cấu trúc đồ thị, 4. Thao tác số. Mỗi loại có nhiều loại phụ khác nhau, hãy tìm chúng bên dưới với. Danh sách này là không toàn diện.

Thao tác chuỗi/mảng

Đâ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.

  • Mergesort từ dưới lên.
  • Quicksort.
  • Hàng đợi ưu tiên.
  • Hàng đợi hai lần.
  • Stacks.
  • Permutation/combination.
  • Mảng hậu tố [Manber và Meyers].
  • Thuật toán Aho Corasick.
  • Thuật toán KMP.

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.

Các vấn đề liên quan đến Subarray

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ải

  • 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 Python

Cá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.
Thủ thuật danh sách hữu ích trong Python

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.
Thủ thuật vòng lặp hữu ích trong Python

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.
Cấu trúc dữ liệu cơ bản trong Python

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!

Có ổn không khi sử dụng Python cho các cuộc phỏng vấn mã hóa?

Ngoài các cấu trúc dữ liệu lý thuyết, Python còn có chức năng mạnh mẽ và thuận tiện được tích hợp vào các triển khai cấu trúc dữ liệu tiêu chuẩn của nó.Các cấu trúc dữ liệu này cực kỳ hữu ích trong các cuộc phỏng vấn mã hóa bởi vì chúng cung cấp cho bạn rất nhiều chức năng theo mặc định và cho phép bạn tập trung thời gian vào các phần khác của vấn đề.These data structures are incredibly useful in coding interviews because they give you lots of functionality by default and let you focus your time on other parts of the problem.

Tôi có thể sử dụng Python cho các cuộc phỏng vấn của Faang không?

Dưới đây là danh sách các ngôn ngữ cho Faang: Python: Python là một ngôn ngữ cực kỳ phổ biến toàn cầu giữa các lập trình viên và nhà khoa học dữ liệu do dễ sử dụng và khả năng thích ứng.Sự đơn giản của Python giúp tập trung vào việc viết các thuật toán và ít hơn trên cú pháp cần thiết để làm như vậy.Python is an extremely global popular language among programmers and data scientists due to its ease of use and adaptability. The simplicity of python helps to focus on writing the algorithms and less on the syntax necessary to do so.

Các cuộc phỏng vấn mã hóa của Google là ngôn ngữ nào?

Python, C ++, Go và Java là các ngôn ngữ lập trình hàng đầu được sử dụng nội bộ tại Google. are the top programming languages used internally at Google.

Chủ Đề