Hướng dẫn is python the best language for interview? - python có phải là ngôn ngữ tốt nhất để phỏng vấn không?

Tôi đã viết mã trong java và bạn tôi cũng vậy Java. Một số người trên YouTube cũng đã đề cập đến điều này. Tôi cảm thấy thoải mái với Java và mặc dù mọi người nói rằng Python rất dễ dàng vì nó đọc như tiếng Anh, tôi coi thường rằng nó không có niềng răng xoăn và thụt lề.

Có phải Python thực sự đáng để học và nó có thực sự làm cho việc mã hóa dễ dàng hơn không (bạn nói rằng các thư viện hữu ích hơn Java,)?

Như tôi đã đề cập trong một bài đăng trên blog trước đây trở thành một kỹ sư phỏng vấn, tôi đã là một kỹ sư phỏng vấn tại Karat khoảng sáu tháng nay. Là một người phỏng vấn, công việc của tôi là quan sát các ứng viên khác nhau cố gắng cùng một câu hỏi. Theo thời gian, tôi nhận thấy một cái gì đó hấp dẫn - các ứng cử viên hoạt động tốt nhất mà tôi đã phỏng vấn tất cả đều sử dụng cùng một ngôn ngữ lập trình. Để làm rõ, Karat cho phép các ứng viên chọn từ 26 ngôn ngữ lập trình (không bao gồm Markdown) khi thử các cuộc phỏng vấn mã hóa. Trong số các ngôn ngữ này, các ứng cử viên có xu hướng chọn cùng một vài ngôn ngữ. Trong số các ngôn ngữ này, có một người chiến thắng rõ ràng khi nói đến ngôn ngữ tốt nhất để sử dụng cho các cuộc phỏng vấn mã hóa - Python. Tất nhiên, các ứng cử viên vẫn có thể thực hiện tốt bằng cách sử dụng các ngôn ngữ khác, nhưng tôi cảm thấy mạnh mẽ "trò chơi" phỏng vấn chống lại họ.

Các ứng cử viên tốt nhất mà tôi đã phỏng vấn tất cả đã sử dụng Python 3. Tôi không nghĩ phiên bản của Python Matters ở đây, nhưng tôi nghĩ tôi sẽ chính xác. Vì vậy, hãy nói về lý do tại sao tôi nghĩ Python là ngôn ngữ tốt nhất để sử dụng trong các cuộc phỏng vấn mã hóa (nếu bạn đã quen thuộc với nó).

Tuyên bố miễn trừ trách nhiệm: Trước khi mọi người cho rằng tôi chỉ là một fanboy Python, tôi muốn làm rõ rằng đó không phải là ngôn ngữ của tôi, và đó không phải là thứ tôi sử dụng thường xuyên. Tôi có thể viết các tập lệnh cơ bản trong Python, và tôi sẽ không khó nhận được nó một cách nhanh chóng. Nhưng tôi sẽ không đặt mình gần với trại Python dựa trên các kỹ năng và kinh nghiệm của tôi. Vì vậy, hy vọng, điều đó chứng tỏ tôi không bị thiên vị ở đây.

Thụt lề> hệ thống vòng tay xoăn

Là người phỏng vấn, tôi không thể nói bất cứ điều gì trong các cuộc phỏng vấn trực tiếp giúp đỡ ứng viên, hoặc họ sẽ được đánh dấu cho các bình luận của tôi. Vì vậy, hãy tưởng tượng tôi đau đớn như thế nào khi xem mọi người dành vài phút để cố gắng sửa chữa một khung xoăn bị mất tích.

Nghe có vẻ ngu ngốc khi đề xuất dấu ngoặc là một vấn đề lớn. Nhưng khi phỏng vấn, mọi người có xu hướng phạm nhiều sai lầm hơn do áp lực thời gian và biết ai đó đang xem mã của họ. Bộ não của chúng tôi tập trung vào câu hỏi phỏng vấn và không nhận được các vấn đề cú pháp đơn giản ngay lập tức. Mã hóa từ từ không phải là một lựa chọn để có được điểm tốt nhất vì các công ty muốn các giải pháp nhanh chóng và chính xác. Khi mọi người vội vã, các vấn đề nhỏ như thiếu ngoặc trở nên khó phát hiện hơn. Có lần tôi đã xem ai đó dành 10 phút đấu tranh với một vấn đề về khung. Dựa trên ý kiến ​​từ những người phỏng vấn khác, tôi cũng không phải là người duy nhất.

Nếu bạn không bị thuyết phục, tôi đã bao gồm một số đoạn mã cơ bản bên dưới để minh họa cách các dấu ngoặc có thể gây nhầm lẫn khi mã hóa dưới áp lực. Điều đáng chú ý là khối mã có xu hướng phức tạp hơn và dài hơn nhiều trong các cuộc phỏng vấn, khiến việc phát hiện ra dấu ngoặc bị thiếu thậm chí còn khó hơn.

# Python

def helloWorld:
	for i in range(len(some)):
		for j in range(len(random)):
			if falseCondition:
				for k in range(len(random)):
					...

// JavaScript

function helloWorld() {
	for (const i in some) {
		for (const j in random) {
			if (falseCondition) {
				for (const k in loop) {
					...	
				}
			}
                 }
           }
      }
}

Bạn có nhận thấy có quá nhiều khung trong mã JavaScript không?

Loại động = ít mã = ​​mã nhanh hơn

Khi nói đến việc viết mã nhanh, thật khó khăn cho ngôn ngữ được gõ tĩnh hoàn thành với các ngôn ngữ được gõ động. Những điều cơ bản như tuyên bố một hàm hoặc biến là nhanh hơn để làm trong Python hơn là trong một ngôn ngữ như Java.

Dưới đây là một so sánh giữa việc khai báo một hàm có trong một mảng số nguyên 2D và trả về cùng loại trong Python và Java, tương ứng.

// Java

public static int[][] myFun(int[][] arr) {

Nhà phát triển Python đã bắt đầu thực hiện chức năng vào thời điểm nhà phát triển Java loại ra từ "tĩnh". Vâng, đây chỉ là một dòng mã, nhưng mã Python luôn ngắn hơn với cùng một cách tiếp cận. Một vài ký tự ở đây và không có nhiều âm thanh. Nhưng khi có hàng chục hoặc hàng trăm dòng mã, tất cả đều tăng thêm vì nó cho nhà phát triển có thêm thời gian để gỡ lỗi mã thay vì gõ mọi thứ.

Mã dài hơn cũng có nghĩa là nhiều khả năng sai lầm khi leo vào. Ví dụ, mọi người mắc lỗi với các loại dữ liệu chức năng hoặc quên nhập từ khóa "tĩnh" khi khai báo chức năng. Với các ngôn ngữ được gõ động, bạn chỉ đơn giản là không có những mối quan tâm này. Ngay cả so với một ngôn ngữ được đánh máy động khác như JavaScript, tôi phải thừa nhận mã Python nhanh hơn rất nhiều để viết vì nó đòi hỏi ít ký tự hơn để thực hiện cùng một logic.

"Ngôn ngữ được gõ tĩnh cũng có lợi thế!" Tôi nghe bạn nói. Điều đó đúng 100%, và tôi đồng ý. Cá nhân, tôi đã đi từ cực kỳ chống lại ngôn ngữ được gõ tĩnh khi bắt đầu sự nghiệp của mình để bắt đầu mọi dự án hiện tại bằng cách sử dụng TypeScript. Trừ khi tôi nhanh chóng ném một cái gì đó với nhau, TypeScript nhận được phiếu bầu của tôi mỗi lần. Các loại đi kèm với sự an toàn và bảo đảm, và IDE có thể tận dụng nó để tạo ra tự động hoàn chỉnh tốt hơn, nó có thể nắm bắt các vấn đề mà ngôn ngữ được gõ động không thể, và nhiều lợi thế hơn. Nhưng khi mã ngắn hơn đánh bại mã tốt trong một cuộc phỏng vấn, các ngôn ngữ được gõ động sẽ kết thúc. Giống như nhiều nơi, tại Karat, chúng tôi nhấn mạnh nhiều hơn vào các giải pháp làm việc hơn là mã trông đẹp.

Một số ngôn ngữ tốt hơn để thực hiện các câu hỏi thuật toán

Có lẽ đó là bởi vì tôi là một nhà phát triển JavaScript, vì vậy đây là một điểm đau quan trọng hơn. Đối với các ngôn ngữ khác, điều này có thể không liên quan. Nhưng, với tư cách là một nhà phát triển JavaScript, tôi thấy việc thiếu các hàm sử dụng hữu ích làm cho các giải pháp thuật toán mã hóa khó khăn hơn đáng kể.

Để chứng minh quan điểm của tôi hơn nữa, đây là một so sánh giữa Python và JavaScript để tìm các giao điểm giữa hai mảng. Không chỉ là mã Python ngắn hơn; Mã JavaScript cũng khó đọc và hiểu hơn. Tất cả điều này thêm ma sát vào quá trình phỏng vấn.

# Python

def intersection(a, b):
    return list(set(a).intersection(b))

// JavaScript

function getIntersection(a, b) {
    const set1 = new Set(a);
    const set2 = new Set(b);

    const intersection = [...set1].filter(
        element => set2.has(element)
    );

    return intersection;
}

Tôi có tìm thấy một giao lộ như thế này trong một cuộc phỏng vấn khi mã hóa trong JavaScript không? Dĩ nhiên là không. Lựa chọn đầu tiên của tôi sẽ là triển khai giải pháp bằng cách sử dụng vòng lặp forEach() vì tôi quen thuộc hơn với nó. Trong các cuộc phỏng vấn, sự quen thuộc là vua. Nhưng việc triển khai này không nhanh hơn để viết và có thể giới thiệu các lỗi không cần thiết hơn phương pháp Python. Nó cũng kém hơn về độ phức tạp về thời gian.

function getIntersection(a,b) {
	const arr = [];

	a.forEach(elem => {
		if (b.contains(elem)) {
			arr.push(elem);
		}
	}

	const arr;
}

Để đảm bảo đây không phải là vấn đề chỉ ảnh hưởng một phần vào các nhà phát triển JavaScript, tôi đã nghiên cứu trực tuyến và tìm thấy câu hỏi này trên Stackoverflow, vì vậy có vẻ như Golang có một vấn đề tương tự.

Sự kết luận

Bây giờ, bạn có nên bỏ tất cả mọi thứ và học Python cho tất cả các cuộc phỏng vấn trong tương lai? Không, đó sẽ là điên rồ. Mọi người có thể giỏi bất kỳ ngôn ngữ nào họ dành thời gian làm chủ. Điều tốt hơn để làm là thực hành với nhiều câu hỏi mã hóa kiểu phỏng vấn hơn và tìm giải pháp nhanh hơn. Tìm giải pháp đơn giản nhất sẽ giúp bạn tiết kiệm nhiều thời gian hơn là chuyển sang Python và gõ ít mã hơn. Nó thường tốt nhất để đi với một cái gì đó quen thuộc và thoải mái hơn so với tối thiểu những lợi ích mà tôi đã giải thích ở trên trong môi trường nhạy cảm với thời gian. Tuy nhiên, đối với những người đã sử dụng nhiều ngôn ngữ trong đó Python đã có trong hộp công cụ của họ, tôi thực sự khuyên bạn nên sử dụng nó cho các cuộc phỏng vấn trừ khi công việc yêu cầu một ngôn ngữ cụ thể.

Một số ứng viên hỏi tôi làm thế nào tôi trở thành một kỹ sư phỏng vấn. Nó luôn nghe có vẻ như là một sáo ngữ, nhưng tôi thích nhìn thấy những người khác nhau tiếp cận các câu hỏi phỏng vấn giống nhau từ các góc độ khác nhau và đưa ra các giải pháp độc đáo. Hơn nữa, tôi thường học được điều gì đó từ các ứng viên mà tôi đã phỏng vấn. Dù bạn có tin hay không, một cuộc phỏng vấn gần đây tôi đã thực hiện đã truyền cảm hứng cho bài đăng trên blog này. Nếu điều này nghe có vẻ như một cái gì đó bạn quan tâm, bạn có thể đăng ký để trở thành một kỹ sư phỏng vấn sử dụng liên kết này (nếu bạn đến từ Hoa Kỳ) hoặc liên kết này (từ bất kỳ quốc gia nào khác)!

Ngôn ngữ mã hóa tốt nhất cho các cuộc phỏng vấn là gì?

Dưới đây là 5 ngôn ngữ lập trình hàng đầu mà bạn cần thành thạo để bẻ khóa các cuộc phỏng vấn của Faang:..
Java.Java là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ cũng có thể được sử dụng để lập trình đa năng.....
Golang.....
Python.....
Kotlin.....
JavaScript..

Phỏng vấn ở Python có ổn không?

Không có điểm nào trong việc lo lắng về việc Python là một lựa chọn tốt cho cuộc phỏng vấn mã hóa.Sự rõ ràng của bạn để hiểu các khái niệm cơ bản của bất kỳ ngôn ngữ lập trình nào là rất quan trọng.Không quan trọng bạn có mã trong C, C ++, Java, v.v.. Your clarity of understanding the basics concepts of any programming language is very important. It doesn't matter whether you code in C,C++,Java, etc.

Tôi có nên học Python chỉ để phỏng vấn không?

Vâng, nói chung, Python rất hữu ích để biết và sử dụng cho các cuộc phỏng vấn mã hóa.Một trong những thế mạnh khổng lồ của Python đối với các ngôn ngữ khác, ít nhất là trong không gian phỏng vấn mã hóa, là khá dễ dàng để nhanh chóng chế giễu thuật toán cho một câu hỏi.Python is useful to know and to use for coding interviews. One of Python's huge strengths over other languages, at least in the coding interview space, is that it's fairly easy to quickly mock up an algorithm for a question.