Tôi có thể sử dụng JavaScript cho cuộc phỏng vấn trên Amazon không

  • Suy nghĩ lớn. Suy nghĩ nhỏ là một lời tiên tri tự hoàn thành. Các nhà lãnh đạo tạo ra và truyền đạt một hướng táo bạo truyền cảm hứng cho kết quả
  • Thiên vị cho hành động. Tốc độ quan trọng trong kinh doanh. Nhiều quyết định và hành động có thể đảo ngược và không cần nghiên cứu sâu rộng. Chúng tôi coi trọng việc chấp nhận rủi ro có tính toán
  • tiết kiệm. Hoàn thành nhiều hơn với ít hơn. Những hạn chế sinh ra sự tháo vát, tự cung tự cấp và phát minh
  • kiếm được niềm tin. Các nhà lãnh đạo chăm chú lắng nghe, nói chuyện thẳng thắn và đối xử tôn trọng với người khác. Họ tự phê bình bằng giọng nói, ngay cả khi làm như vậy là khó xử hoặc xấu hổ
  • Lặn sâu. Các nhà lãnh đạo hoạt động ở tất cả các cấp, luôn kết nối với các chi tiết, kiểm toán thường xuyên và hoài nghi khi các số liệu khác nhau. Không có nhiệm vụ nào bên dưới họ
  • Có Xương Sống; . Các nhà lãnh đạo có nghĩa vụ thách thức các quyết định một cách tôn trọng khi họ không đồng ý, ngay cả khi làm như vậy là không thoải mái hoặc mệt mỏi
  • Mang lại kết quả. Các nhà lãnh đạo tập trung vào các yếu tố đầu vào chính cho hoạt động kinh doanh của họ và cung cấp chúng với chất lượng phù hợp và kịp thời. Bất chấp những thất bại, họ vẫn nắm bắt cơ hội và không bao giờ ổn định
  • Các cuộc phỏng vấn Kỹ sư giao diện người dùng khác rất nhiều so với các cuộc phỏng vấn Kỹ sư phần mềm thông thường và bao gồm 70–80% các khái niệm liên quan đến giao diện người dùng (HTML, CSS & Javascript) và chỉ khoảng 20–30% Cấu trúc dữ liệu & Thuật toán. Mặc dù có một số tài nguyên tốt như Câu hỏi phỏng vấn dành cho nhà phát triển giao diện người dùng, nhưng đôi khi rất khó để tìm một tập hợp con nhanh các câu hỏi thường gặp hoặc một tập hợp nhanh để đánh giá kiến ​​thức của chúng ta về các khái niệm cơ bản ngay khi bắt đầu chuẩn bị hoặc thậm chí tại . Do đó, đây là nỗ lực của tôi để đưa chúng vào một trang duy nhất. Tôi hy vọng nó phục vụ mục đích cho các nhà phát triển giao diện người dùng vừa chớm nở như tôi 🤓

    Sau đây sẽ là một lời giải thích ngắn, cùng với một số giải pháp, về một câu hỏi JavaScript phổ biến có xu hướng được hỏi trong các cuộc phỏng vấn của nhà phát triển. Câu hỏi thường giống như sau

    Câu hỏi này liên quan đến các chủ đề. đóng cửa, setTimeout và phạm vi. Câu trả lời đúng cho câu hỏi này là

    Index: 4, element: undefined(in 4 lần)

    Nếu đó không phải là điều bạn mong đợi, thì hy vọng phần còn lại của bài viết này sẽ giúp giải thích lý do tại sao lại xảy ra trường hợp này trong JavaScript

    Tại sao câu hỏi này rất phổ biến?

    Một người dùng trên reddit đã đề cập rằng họ đã được hỏi câu hỏi này trong một cuộc phỏng vấn với nhà phát triển Amazon. Bản thân tôi cũng đã được hỏi loại câu hỏi kết thúc + vòng lặp này trong các cuộc phỏng vấn — ngay cả trong một cuộc phỏng vấn của Google

    Câu hỏi này kiểm tra kiến ​​thức của bạn về một số khái niệm JavaScript quan trọng và do cách thức hoạt động của ngôn ngữ JavaScript nên đây thực sự là điều có thể xuất hiện khá thường xuyên khi bạn đang làm việc — cụ thể là cần sử dụng setTimeout hoặc một số loại hàm không đồng bộ trong một vòng lặp

    Hiểu biết vững chắc về phạm vi chức năng/khối, chức năng ẩn danh, bao đóng và IIFE chắc chắn sẽ giúp bạn trở thành nhà phát triển JavaScript tốt hơn và giúp bạn thành công trong các cuộc phỏng vấn trong tương lai

    Các giải pháp

    Tôi thực sự đã đề cập đến câu hỏi này và một số giải pháp trong các bài viết trước

    • 3 câu hỏi đóng JavaScript phổ biến
    • 3 câu hỏi JavaScript cần chú ý trong các cuộc phỏng vấn mã hóa

    Để trích dẫn từ một bài báo trước

    Lý do cho điều này là vì hàm setTimeout tạo ra một hàm (bao đóng) có quyền truy cập vào phạm vi bên ngoài của nó, đó là vòng lặp chứa chỉ mục i. Sau 3 giây trôi qua, hàm được thực thi và in ra giá trị của i, giá trị này ở cuối vòng lặp là 4 vì nó quay vòng qua 0, 1, 2, 3, 4 và cuối cùng vòng lặp dừng ở 4. arr[4] không tồn tại, đó là lý do tại sao bạn nhận được undefined

    Có hai giải pháp phổ biến cho câu hỏi. Một liên quan đến việc chuyển các tham số cần thiết vào hàm bên trong và giải pháp còn lại sử dụng ES6

    Một người dùng trên bài đăng trên reddit cũng cung cấp câu trả lời tương tự cho câu hỏi này. Ngoài ra còn có một lời giải thích hay về việc đóng bởi người dùng trên Stack Overflow

    Điều này thường gây nhầm lẫn cho những người mới sử dụng JavaScript hoặc lập trình chức năng. Đó là kết quả của sự hiểu lầm về việc đóng cửa là gì. Một bao đóng không chỉ chuyển giá trị của một biến hoặc thậm chí là một tham chiếu đến biến. Một bao đóng chụp chính biến đó

    Nếu bạn có bất kỳ câu hỏi phỏng vấn hoặc JavaScript nào mà bạn muốn tôi viết hoặc giải thích, hãy cho tôi biết trong phần nhận xét. Cảm ơn vì đã đọc

    Vì vậy, bạn đã được liên hệ để phỏng vấn kỹ thuật và nghĩ rằng bạn cần học một ngôn ngữ kỹ thuật thực sự

    Tôi tình cờ thấy bài đăng này khi ai đó đang hỏi liệu họ có thể sử dụng JavaScript cho một cuộc phỏng vấn viết mã hay chuyển sang học Java/C++

    Anonymous person on blind asking if they can use Javascript to crack the coding interview

    Cuộc thảo luận tiếp tục với những người rơi vào cả hai phía của quang phổ. Đó là một chủ đề phổ biến mà tôi đã thấy trên khắp các trang web khi mọi người đặt câu hỏi về tính hợp pháp của việc sử dụng JavaScript trong các cuộc phỏng vấn kỹ thuật hoặc tuyên bố rằng mặc dù bạn có thể thực hiện các thuật toán bằng JavaScript, nhưng các thuật toán khó như biểu đồ và cây được cho là không thể thực hiện được

    Khi tìm kiếm một công việc mới, rào cản lớn mà hầu hết các nhà phát triển phần mềm phải vượt qua là cuộc phỏng vấn kỹ thuật. Trong khi chuẩn bị cho cuộc phỏng vấn, hầu hết mọi người đều muốn tối ưu hóa thời gian chuẩn bị trước cuộc phỏng vấn. Những thứ như thuật toán nào cần tập trung vào, cấu trúc dữ liệu nào cần học lại hoặc thậm chí ngôn ngữ nào bạn nên sử dụng để phỏng vấn

    Các cuộc phỏng vấn kỹ thuật được thực hiện ở hầu hết các công ty là để đánh giá khả năng tư duy phản biện của bạn và mức độ bạn giải quyết vấn đề và thực hiện các giải pháp chứ không phải là độ sâu kiến ​​thức của bạn trong một ngôn ngữ cụ thể (một lần nữa, điều này liên quan đến phần viết mã chứ không phải các câu hỏi mà bạn có thể

    Trong quá trình phỏng vấn căng thẳng này, bạn không muốn thất bại chỉ vì bạn không thể nhớ cú pháp, một số chức năng/cách triển khai cụ thể hoặc quên đặt dấu chấm phẩy ở cuối dòng. Phần lớn năng lượng của bạn trong một cuộc phỏng vấn không nên dành để ghi nhớ cú pháp cụ thể của ngôn ngữ, mà nên dành để nói chuyện và tạo ra thuật toán của bạn

    Trước khi chúng ta đi sâu vào các lợi thế của JavaScript và vạch trần một số tuyên bố đó, chúng ta hãy làm sáng tỏ

    • JS là một Ngôn ngữ hoàn chỉnh của Turing, nghĩa là nó có thể được sử dụng để giải quyết bất kỳ vấn đề tính toán nào — điều này đưa nó vào lĩnh vực của các ngôn ngữ như Java, C, C++, Python, v.v. Mặc dù đây không phải là điểm mạnh của JS, nhưng nó chắc chắn có thể hoàn thành công việc
    • Về cơ bản, bất kỳ câu hỏi thuật toán nào mà người phỏng vấn đánh bạn đều có thể được giải quyết bất kể ngôn ngữ nào
    Thực hiện một cuộc phỏng vấn bằng JavaScript mang lại cho bạn 2 lợi thế chính
    1. Cú pháp đơn giản, trực quan và dễ nắm bắt — thay vì dành thời gian ghi nhớ cách khai báo một mảng, bạn có thể dành nhiều thời gian hơn để suy nghĩ về logic cho giải pháp của mình
    2. Tính linh hoạt của ngôn ngữ tự cho phép xử lý các trường hợp khác nhau hoặc sử dụng cấu trúc dữ liệu cơ sở và dễ dàng chuyển đổi chúng thành các cấu trúc khác (như biến bản đồ/đối tượng thành một mảng, v.v.)

    Dưới đây là các cấu trúc dữ liệu cốt lõi mà bạn sẽ sử dụng trong hầu hết các cuộc phỏng vấn

    Mảng

    Khai báo một mảng JavaScript vs Java

    Thêm giá trị vào một mảng

    Thêm giá trị vào một mảng JavaScript so với Java

    Đối tượng/HashMaps/Hashtables

    Khai báo một đối tượng JavaScript vs Java

    Dây

    Khai báo và sửa đổi một chuỗi JavaScript vs Java

    Như bạn có thể thấy đối với các cấu trúc dữ liệu phổ biến được sử dụng cho hầu hết các vấn đề, Java dài dòng và cụ thể hơn nhiều so với JavaScript tương đương (tôi không chắc về các ngôn ngữ khác)

    Tính linh hoạt đó là một trong những điểm mạnh chính trong JavaScript. Trong các tình huống khi bạn không chắc mình sẽ lưu trữ gì trong các cấu trúc dữ liệu đó hoặc kết quả cuối cùng của bạn sẽ như thế nào, việc có thể lưu trữ bất kỳ thứ gì trong đó và điều chỉnh thuật toán của bạn khi cần thay vì thay đổi các loại hoặc kích thước đã khai báo trước đó sẽ giúp bạn tiết kiệm

    Vì bạn bị hạn chế về thời gian trong cuộc phỏng vấn của mình (thường là khoảng 30–45 phút để giải quyết 1–2 vấn đề, bạn muốn tối ưu hóa thời gian dành cho việc suy nghĩ so với việc viết đi viết lại mã

    Thưởng

    Tôi không chắc liệu mình có coi đây là lợi thế của việc sử dụng JavaScript hay không, nhưng việc sử dụng JavaScript trái ngược với Java cho phép bạn tránh được các câu hỏi như đa luồng, tính không đồng bộ hoặc xử lý bế tắc trong mã của mình. Lưu ý rằng bạn vẫn có thể được hỏi những câu hỏi này (vì vậy bạn nên biết chúng là gì và cách giải quyết chúng) nhưng có thể bạn sẽ không được yêu cầu triển khai chúng vì JavaScript về bản chất là một ngôn ngữ đơn luồng

    Phần kết luận

    Tôi không nói rằng JavaScript là ngôn ngữ tốt nhất để phỏng vấn. Tôi thực sự không nghĩ rằng có ngôn ngữ 'tốt nhất' để phỏng vấn. Đó là vấn đề chọn thứ gì đó bạn biết rõ và cảm thấy thoải mái

    Nếu bạn cảm thấy thoải mái với ngôn ngữ khác và cảm thấy mình có thể giải quyết vấn đề tốt nhất bằng ngôn ngữ đó, thì hãy làm như vậy. Nếu bạn cảm thấy rằng JavaScript là ngôn ngữ mạnh nhất của mình, đừng cảm thấy áp lực khi sử dụng ngôn ngữ khác. Vào cuối ngày, cuộc phỏng vấn là một bài kiểm tra kỹ năng lập trình của bạn chứ không phải khả năng của ngôn ngữ

    Tôi hy vọng bài viết này đã giúp làm rõ một số quan niệm sai lầm mà mọi người có thể có về việc JavaScript phù hợp để sử dụng cho các cuộc phỏng vấn. Nếu bạn đã sử dụng JavaScript trong một cuộc phỏng vấn kỹ thuật, vui lòng bình luận bên dưới. Tôi luôn tò mò muốn nghe về trải nghiệm của mọi người

    Một ghi chú từ tiếng Anh thuần túy

    Bạn có biết rằng chúng tôi đã ra mắt một kênh YouTube không? . Hãy xem chúng tôi bằng cách nhấp vào đây và nhớ đăng ký kênh nhé 😎

    Chúng tôi có thể phỏng vấn Amazon bằng JavaScript không?

    Và mã của bạn phải biên dịch cho hai câu hỏi để tiếp tục trong quá trình phỏng vấn. Bạn sẽ có thể biên dịch mã của mình bao nhiêu lần tùy thích trước khi gửi giải pháp và bạn có thể sử dụng bất kỳ một trong tám ngôn ngữ sau. C#, C++, Java, C, Python, Ruby, Swift và JavaScript .

    Tôi có thể sử dụng JavaScript trong các câu hỏi phỏng vấn không?

    Thực hiện phỏng vấn bằng JavaScript mang lại cho bạn 2 lợi thế chính. Cú pháp đơn giản, trực quan và dễ nắm bắt — thay vì dành thời gian ghi nhớ cách khai báo một mảng, bạn có thể dành nhiều thời gian hơn để suy nghĩ về .

    Có thể sử dụng JavaScript để phỏng vấn viết mã không?

    Câu trả lời là có. Hầu hết các công ty cho phép bạn viết mã bằng bất kỳ ngôn ngữ nào bạn muốn - ngoại lệ duy nhất tôi biết là Google, nơi họ chỉ cho phép ứng viên chọn từ Java, C++, JavaScript .

    Tôi có thể sử dụng JavaScript trong cuộc phỏng vấn của Google không?

    Tôi có thể sử dụng JavaScript để phỏng vấn không? . Tuy nhiên, lưu ý rằng nếu người phỏng vấn muốn kiểm tra kỹ năng của bạn bằng một ngôn ngữ cụ thể, thì điều đó sẽ thay đổi. Yes, as long as that's the language you know best, you can usually use it. Note, however, that if interviewers want to check your skill in a particular language, that changes.