Đây chỉ là tôi hay đây là một câu hỏi phỏng vấn công nghệ khó hiểu? [đóng cửa]


153

Lý lịch

Tôi vừa được yêu cầu trong một cuộc phỏng vấn công nghệ để viết một thuật toán để đi qua một "đối tượng" (chú ý các trích dẫn) trong đó A bằng B và B bằng C và A bằng C.

Đó là nó. Đó là tất cả thông tin tôi đã được cung cấp.

Tôi đã hỏi người phỏng vấn mục tiêu là gì nhưng rõ ràng không có mục tiêu nào, chỉ là "đi qua" "đối tượng".

Tôi không biết về bất cứ ai khác, nhưng đây dường như là một câu hỏi ngớ ngẩn đối với tôi. Tôi hỏi lại, "tôi đang tìm kiếm một giá trị à?". Không. Chỉ cần "vượt qua" nó.

Tại sao tôi lại muốn lặp đi lặp lại vô tận thông qua "đối tượng" này ?? Để làm tan bộ xử lý của tôi có lẽ ??

Câu trả lời theo người phỏng vấn là tôi nên viết một hàm đệ quy.

OK, vậy tại sao không đơn giản yêu cầu tôi viết một hàm đệ quy? Và ai sẽ viết một hàm đệ quy không bao giờ kết thúc?

Câu hỏi của tôi:

Đây có phải là một câu hỏi hợp lệ cho phần còn lại của bạn và, nếu vậy, bạn có thể cung cấp một gợi ý về những gì tôi có thể thiếu? Có lẽ tôi đang suy nghĩ quá nhiều về việc giải quyết các vấn đề trong thế giới thực. Tôi đã mã hóa thành công trong một thời gian dài nhưng quá trình phỏng vấn công nghệ này khiến tôi cảm thấy mình không biết gì cả.


197
Câu trả lời đúng duy nhất ở đây là "Tôi không hiểu câu hỏi."
user16764

16
Chà, nếu họ thực sự không nói A, B và C là gì (như - họ là đối tượng) và họ đặt đối tượng trong dấu ngoặc kép, thì dường như họ có thuật ngữ độc đáo riêng. Nếu họ hỏi làm thế nào để đi qua một biểu đồ đối tượng trong đó đối tượng A tham chiếu đối tượng B tham chiếu đối tượng C tham chiếu đối tượng A thì điều đó có thể hiểu được, nhưng tại sao nó phải được đệ quy tôi không biết. Nhân tiện, nó không phải là vô hạn nếu bạn duy trì một danh sách các đối tượng đã truy cập. Nhưng vâng, tôi sẽ lo lắng về việc làm việc cho một công ty sử dụng bài kiểm tra đó - họ có vẻ bối rối.
psr

77
Câu hỏi như được mô tả là vô nghĩa, và câu trả lời cũng vậy. Hoặc là bạn đang đánh giá sai những gì họ hỏi, hoặc người hỏi là một thằng ngốc và có lẽ bạn không nên làm việc với anh ta.
Mason Wheeler

26
Tại sao các cuộc phỏng vấn dev phải đau đớn? Tất cả chúng ta không thể ngồi xuống và xem mã của nhau và thảo luận? Các nhà phát triển sẽ biết các nhà phát triển khác đang ở đâu bằng cách này và sẽ không mất 6 giờ. Kiểm tra mã là tồi tệ nhất. Tôi không ngại thừa nhận rằng tôi rất thích cung cấp các giải pháp tối ưu trong khi 3 nhà phát triển tôi chưa bao giờ gặp tôi khi tôi gõ.
Erik Reppen

19
Tôi đã phải kiểm tra hồ sơ của bạn để xem bạn có sống cùng khu vực với tôi không vì tôi đã làm việc trong một thời gian ngắn tại một công việc mà một người bạn phỏng vấn tôi hỏi, "Bạn có định hướng chi tiết không?" Tôi đã trả lời rằng "Bạn có thể cụ thể hơn không?" Và anh ta trả lời, "Tôi không thể giải thích nó, nhưng tôi biết một người định hướng chi tiết khi tôi thấy công việc của họ." Tình yêu mơ hồ.
Jesse C. Choper

Câu trả lời:


305

Đó là một câu hỏi phỏng vấn không hợp lệ, không hợp lệ. Người phỏng vấn không thể nói rõ rằng anh ấy / cô ấy đang tìm kiếm điều gì và mong bạn đọc suy nghĩ của anh ấy / cô ấy thay vì trả lời một cách có ý nghĩa với những nỗ lực thích hợp của bạn để làm rõ tuyên bố về vấn đề. Hãy xem xét bản thân bạn may mắn bạn đã không nhận được công việc.

Ý nghĩa của động từ "traverse" hoạt động trên một "đối tượng" chung chung là mơ hồ, theo ý kiến ​​của tôi. Bắt đầu thay thế một loạt các danh từ khác nhau cho đối tượng từ và nó nhanh chóng trở nên rõ ràng rằng việc truyền tải một đối tượng chỉ có ý nghĩa đối với một tập hợp nhỏ trong vũ trụ của các vật thể là các đối tượng.

Nó có ý nghĩa để "đi qua" các nút của "cây nhị phân". Nó không có ý nghĩa để "đi qua" một "chú hề". Tuy nhiên, một đối tượng có thể dễ dàng đại diện cho một "chú hề" vì nó có thể đại diện cho một "cây nhị phân".


9
Gần đây tôi đã bắt đầu thực hành thay thế danh từ bằng những câu hỏi ngớ ngẩn bằng từ "chú hề" +1 thưa ông!
rupjones

108
"Clown traversal" - thật là một Meme tuyệt vời cho "câu hỏi kỹ thuật ngu ngốc". Vượt qua nó
radarbob

8
Hmm, tôi có thể đi qua var clown = {hat: "với hoa", tóc: "đỏ tươi", mũi: "bóng đỏ", miệng: "Miệng đỏ đóng khung trong trắng", ...};)
mplungjan

37
Toàn bộ lĩnh vực nghiên cứu lý thuyết của tôi liên quan đến việc lặp đi lặp lại chú hề, bạn vô cảm!

6
@JackManey: Mọi người đều biết rằng những chú hề phải được duyệt theo cách đệ quy .
Adam Robinson

39

Tôi có thể thấy ba khả năng ở đây.

  1. Cô ấy hoàn toàn bất tài. Không có nhiều hơn để nói về điều đó.
  2. Cô ấy đã cố tình làm cho nó mơ hồ, để xem bạn sẽ làm tốt như thế nào khi đặt câu hỏi để tìm ra những gì bạn phải làm, và những gì cô ấy thực sự sau đó.
  3. Vì bất kỳ lý do gì, cô ấy đã quyết định rằng cô ấy không muốn bạn thuê, vì vậy cô ấy đã hỏi một câu hỏi không thể trả lời được. Khi cô ấy được hỏi về các kỹ năng của bạn, cô ấy đã bỏ qua phần đó và nói điều gì đó như: "Tôi đã hỏi anh ấy về cách vượt qua biểu đồ ba nút và anh ấy hoàn toàn bối rối - thậm chí còn không biết làm thế nào để bắt đầu. Rõ ràng là anh ta không đủ năng lực! Chúng ta thậm chí không nên xem xét việc thuê anh ta. "

7
"Tôi đã hỏi anh ấy về cách duyệt qua biểu đồ ba nút, ..." Nếu bài đăng OP tôi sửa, không có đề cập đến biểu đồ hoặc nút. chỉ là "đối tượng". Đây là một hình thức "lời khai sai". Nếu cô ấy viết một cái gì đó như thế này có thể bị truy tố!
Emilio Garavaglia

9
Bạn có thường sử dụng đại từ nữ khi giới tính của người đó không được đề cập?
Chan-Ho Suh

8
@EmilioGaravaglia: Trước hết, nó có thể không bao giờ được viết. Thứ hai, ngay cả khi giả sử nó được viết ra, chắc chắn bạn sẽ không bao giờ có quyền truy cập vào nó, chỉ là một bức thư "chúng tôi rất tiếc phải thông báo cho bạn ...". Thứ ba, trừ khi bạn có bản ghi âm cuộc phỏng vấn, làm thế nào bạn chứng minh người phỏng vấn không nói sự thật? Điểm mấu chốt: về lý thuyết bạn nên đúng - nhưng trong thực tế, hầu như không có cơ hội.
Jerry Coffin

11
@ Chan-HoSuh: OP đề cập đến giới tính trong một trong những bình luận của anh ấy.
Jerry Coffin

4
@JerryCoffin Xin lỗi tôi rồi.
Chan-Ho Suh

32

Đây chỉ là một phỏng đoán hoang dã, nhưng giả sử người phỏng vấn đang nói về các tham chiếu con trỏ (và đó là một câu hỏi mẹo), câu trả lời là: không có gì để vượt qua, bởi vì tất cả các tham chiếu đều trỏ đến cùng một đối tượng.

Một hàm đệ quy? Đó là để đi ngang qua một cái cây. Tôi không thấy gì trong câu hỏi ban đầu có nghĩa là anh ta đang nói về một cái cây.


28
Tiến lên. Có những công ty tốt hơn để làm việc cho.
shufler

7
Không Đó là một nguyên nhân bị mất. Nếu người phỏng vấn nghĩ rằng anh ta sai, anh ta sẽ không đặt câu hỏi ngay từ đầu. Tôi đã từng được yêu cầu viết một mẫu bằng bất kỳ ngôn ngữ nào tôi muốn; người phỏng vấn tôi cho rằng mã giả là một lựa chọn hợp lệ.
Robert Harvey

8
@Robert Harvey: Có gì sai với mã giả?
James

6
@Robert Harvey: Công bằng mà hầu hết mọi người muốn là tìm ra cách bạn giải quyết vấn đề không tìm hiểu xem bạn đã học được cú pháp của bất kỳ ngôn ngữ cụ thể nào. Nó khá phổ biến đối với các thuật toán được chỉ định trong mã giả.
James

8
Sự khác biệt giữa mã giả và Python là gì? :)
David Robinson

15

Mặc dù tôi không thể nói cho người phỏng vấn cụ thể này, tôi đã thấy những câu hỏi tương tự trong một cuộc phỏng vấn vị trí nhà phát triển phía trước, vì vậy ngôn ngữ tôi sẽ sử dụng trong ví dụ này sẽ là JavaScript.

Được:

var A = {
    key1: 'value1',
    key2: 2,
    key3: {
        innerkey1: 'value3'
    }
}

Một phản hồi sai điển hình có thể chỉ "vượt qua" cấp độ đầu tiên và in / so sánh:

'value1'
2
[Object object]

Vì vậy, trong khi mã hóa một ví dụ đệ quy có thể đi qua tất cả các cấp, tôi sẽ đề cập đến những thứ như:

  • Xử lý tham chiếu thông tư
  • Làm thế nào để xử lý các mảng (chúng cũng nên được duyệt qua đệ quy?)
  • Các chức năng nên được đánh giá và giá trị trả về của chúng được xử lý?
  • Đối với JavaScript: có nên so sánh nguyên mẫu phù hợp và các thuộc tính được kế thừa không?

Vì vậy, "giải pháp" mà tôi đoán người phỏng vấn sẽ đưa ra là bắt đầu một cuộc trò chuyện với một câu hỏi có vẻ đơn giản có nhiều chủ đề nâng cao - đệ quy, gợi ý / tham khảo, kỳ vọng, v.v.


5
Điều đó có ý nghĩa theo cách bạn đặt nó, WSKid. Thật không may, không có bối cảnh đó đã được cung cấp.
Matt Cashatt

3
Đúng, điều này thực sự nắm bắt được ống hút. Họ nên đã trình bày một trường hợp sử dụng, hoặc một ví dụ 3 đối tượng, hoặc một cái gì đó để dẫn đến vấn đề thực tế.
WSkid

1
Tôi đã suy nghĩ tương tự, chỉ cho các thuộc tính đối tượng python. Biết câu hỏi nào họ mong đợi một câu trả lời sẽ rất hữu ích, nhưng điều đó có thể được mong đợi bởi bối cảnh của vị trí, ví dụ như python dev, c # dev, javascript dev, php dev, v.v.
Ken

2
+1 để tìm bối cảnh trong đó câu hỏi có ý nghĩa!
Donal Fellows

9

Một số người phỏng vấn đặc biệt cố gắng đặt câu hỏi để xem ứng viên có đủ thông minh và trung thực để đưa ra một trong hai câu trả lời sau không:

Tôi không biết.

hoặc có thể:

Tôi không thể trả lời như đã nêu.

Họ không muốn một ứng cử viên sẽ chấp nhận BS thuần túy như một thông số kỹ thuật và lãng phí thời gian của chủ lao động của họ và trả tiền để cố gắng thực hiện nó.


6
Toàn bộ cuộc sống của chúng tôi, chúng tôi được tạo điều kiện, trong một kịch bản như cuộc phỏng vấn này, để có thể đưa ra câu trả lời cho một câu hỏi. Nếu nói "Tôi không biết" (bằng cách này, tôi đã làm) có thể chấp nhận được, thì tôi cũng nên nói điều đó trước khi ra tay. Một nỗ lực trong đức tin tốt để trả lời một câu hỏi phỏng vấn không nhất thiết là tương đương với cách người ta sẽ đối xử với một thông số hoặc bộ yêu cầu không đầy đủ. Và tôi nghĩ rằng đây là toàn bộ vấn đề, những cuộc phỏng vấn này đã làm lệch hướng và thiếu điểm trong nhiều trường hợp.
Matt Cashatt

Thật là một câu trả lời hay. Tuy nhiên, đừng quên rằng cần rất nhiều kinh nghiệm để có thể nói điều này. Cá nhân, tôi có thể nói rằng kinh nghiệm với các cuộc phỏng vấn là một phần quan trọng của công việc. @MatthewPatrickCashatt nếu người phỏng vấn sẽ không chấp nhận "Tôi không biết", thì không cần phải nói thêm IMO nữa.
arin

2
Các câu hỏi lừa hoặc là trolling hoặc loại bỏ sự bất tài. Dù bằng cách nào, nếu người phỏng vấn hỏi những câu hỏi mẹo mà bạn không muốn làm việc ở đó.
Ben Brocka

7

Dường như với tôi rằng đây là một câu hỏi (kém rõ ràng) liên quan đến một danh sách liên kết tròn. Tôi có thể đã hỏi liệu đó có phải là ý nghĩa không (vì câu trả lời chắc chắn sẽ khác với câu hỏi khác ở trên, nghĩa là tất cả chúng đều tham chiếu đến cùng một đối tượng).

Nếu đây là một câu hỏi danh sách được liên kết, thì bạn (trong trường hợp này) có một danh sách được liên kết đơn, trong đó nút kết thúc chỉ đến đầu kia (mặc dù nếu nó được diễn đạt như bạn nói - thì nó có thể được liên kết đôi nếu A chỉ vào B và C - nhưng làm rõ về phần phỏng vấn sẽ giúp điều này).

A -> B -> C -> A

Ngoài ra (và điều này xảy ra mọi lúc), người phỏng vấn có thể đã đọc câu hỏi này, nghĩ rằng đó là một câu hỏi 'tốt', nhưng thực sự không biết câu trả lời (hoặc thậm chí ý nghĩa của nó).


1
Cảm ơn Maich - Tôi nghĩ rằng điểm cuối cùng của bạn là có khả năng nhất.
Matt Cashatt

5

Một phần của thách thức ở đây là để có được nhiều chi tiết hơn bằng cách đặt câu hỏi cụ thể để biết rằng có một cấu trúc cây và các thành phần liên quan đến việc thực hiện một giao dịch. Có thể có giả định rằng không có nhiều cấu trúc dữ liệu khác mà một người đi qua bên cạnh cây cối nhưng đó là một bước nhảy vọt trong tâm trí tôi.


1
Cảm ơn vua JB. Đó là một lời nhắc tốt để đặt câu hỏi. Trong trường hợp cụ thể này, tôi đã làm. Trên thực tế, tôi thậm chí đã hỏi nếu đó là một cái cây và câu trả lời là không! Nhưng quan điểm của bạn là thực hiện tốt rằng tôi có trách nhiệm chắt lọc càng nhiều thông tin càng tốt bằng cách đặt câu hỏi.
Matt Cashatt

3

Họ có thể muốn cố gắng tìm ra cách bạn đối phó với các vấn đề lạ. Nhưng trong trường hợp này, nó không liên quan gì đến một "cuộc phỏng vấn công nghệ". Nó trông giống như một cuộc phỏng vấn tâm lý.


5
Tôi rất muốn xem một ví dụ về một trong những thông số kỹ thuật của họ cho một dự án phần mềm.
Chuck D

Nếu cuộc phỏng vấn dành cho một nhà phân tích hệ thống hoặc một vị trí tương tự, thì điều này hoàn toàn thích hợp: công việc của bạn là giúp khách hàng làm rõ câu hỏi của họ, thay vì trả lời chúng.
Revierpost

1
@ rebierpost - Không phải vậy.
Matt Cashatt

3

Viết một thuật toán để duyệt qua một "đối tượng" (chú ý các dấu ngoặc kép) trong đó A bằng B và B bằng C và A bằng C.

Có vẻ như hầu hết mọi người đều cho rằng A, B và C là con trỏ, nhưng họ cũng có thể dễ dàng trở thành chú hề. (Hoặc thành viên của lớp chú hề.) Hoặc họ có thể là tên chú hề. (Hoặc tên lớp. Hoặc các lớp con của lớp chú hề.)

Tôi đã xoay các bảng và hỏi liệu đây có phải là cách họ thường chuẩn bị các thông số kỹ thuật phát triển hay không, và sau đó cho họ biết làm thế nào tôi có thể giúp họ với giai đoạn phát triển đặc tả yêu cầu. Truyền thông kém về kỳ vọng dẫn đến sản phẩm làm việc kém. Hoặc là họ sẽ lấy nó hoặc họ sẽ không, Nếu họ không lấy nó, tôi sẽ bỏ đi.


2

Trong khi câu hỏi được diễn đạt kém và người phỏng vấn rõ ràng là không có ích trong việc cung cấp bất kỳ hướng nào, tôi có một chút khác biệt về những gì đang được hỏi.

Tôi nghĩ rằng người phỏng vấn đang tìm kiếm một giải pháp đi qua cấu trúc đối tượng bằng cách sử dụng một số loại phản xạ. Thông tin mà ba đối tượng bằng nhau sẽ tạo ra một cuộc trò chuyện so sánh nhận dạng đối tượng (A == B có nghĩa là các đối tượng thực sự là cùng một đối tượng trong bộ nhớ) hoặc so sánh bình đẳng đối tượng (A == B có nghĩa là các giá trị của các đối tượng là giống nhau).

Việc người phỏng vấn nói rằng câu trả lời là một chức năng "đệ quy", có lẽ chỉ ra rằng một cuộc thảo luận về sao chép và so sánh sâu so với nông được mong đợi.


2

Đến rất muộn với bữa tiệc này, nhưng tôi nghĩ người phỏng vấn đã hỏi không chính xác câu hỏi này:

Viết một thuật toán để duyệt qua một mảng và xác định rằng A bằng B và B bằng C và A bằng C, theo thứ tự đó.

Sau đó, câu trả lời đúng sẽ là một thuật toán đệ quy.


1

Tôi vừa được yêu cầu trong một cuộc phỏng vấn công nghệ để viết một thuật toán để đi qua một "đối tượng" (chú ý các trích dẫn) trong đó A bằng B và B bằng C và A bằng C.

Câu objecthỏi được tạo thành từ các bộ phận A,B and C, và nó tạo thành một triangle. Người chỉ đơn giản là hỏi xem đối tượng (một bộ sưu tập) có chứa tất cả các phần bằng nhau không.

Người phỏng vấn muốn biết nếu được trình bày với các bộ phận, A, B and Cbạn có thể biết nếu tất cả đều bằng nhau mà không bị mắc kẹt trong một vòng lặp vô hạn. Câu hỏi này thật ngu ngốc chỉ đơn giản là để hiểu và họ vẫn xoay sở để hỏi nó.

Tất cả đều bằng nhau khi A == B && B == C && A == C, nhưng điều đó có thể được đơn giản hóa thành chỉ A == B && A == C.

Sự đơn giản của câu hỏi dẫn đến sự nhầm lẫn, và nó thực sự được nói xấu.

Các từ ngữ chính xác nên có.

Viết một thuật toán để kiểm tra các phần của một bộ sưu tập để xem liệu chúng có bằng nhau không. Chăm sóc phải được đưa ra để không bị mắc kẹt trong một vòng lặp vô hạn. Ví dụ; nếu phần A bằng B và B bằng C và A bằng C có thể gây ra vấn đề.


Câu trả lời theo người phỏng vấn là tôi nên viết một hàm đệ quy.

Có, bạn có thể trả lời câu hỏi are all my parts equalbằng cách sử dụng các hàm đệ quy. Không, đây không phải là một giải pháp hiệu quả.

EDIT : Sau một số suy nghĩ. Không, không thể kiểm tra bộ sưu tập chứa tất cả các phần bằng nhau bằng cách sử dụng hàm đệ quy.

Giải pháp hiệu quả nhất là như sau.

function are_all_equal(parts)
{
   for(int i=1; i < parts.length; i++)
       if parts[i] is not same as parts[0]:
           return false;
   return true;
}

print are_all_equal(parts) ? "yes" : "no";

Vấn đề này xảy ra trong lập trình và yêu cầu ai đó viết một thuật toán để kiểm tra một bộ sưu tập là hoàn toàn bình thường. Tùy thuộc vào ngôn ngữ lập trình, vấn đề này thường có thể được giải quyết chỉ bằng một dòng mã.

Từ ngữ như họ đã làm, và mong đợi câu trả lời sai là không bình thường. Vì câu hỏi này đã được hỏi một năm trước. Tôi thực sự hy vọng bạn đã kết thúc làm việc ở một nơi khác. Tôi rất muốn nghe từ bài viết gốc về cách mọi thứ diễn ra với anh ấy / cô ấy.


2
Mọi thứ trở nên tuyệt vời - chạy nhanh nhất có thể từ công ty đó và đã hạnh phúc kể từ đó.
Matt Cashatt

0

Đây có phải là một câu hỏi phỏng vấn Java, nếu vậy, có thể anh ta muốn kiểm tra các kỹ năng của bạn bằng cách ghi đè "mã băm" và "bằng".

Bạn sẽ phải ghi đè hai phương thức này và sử dụng phương thức bằng ghi đè để dừng đệ quy khi bạn so sánh A với A.

Không ghi đè, việc so sánh của bạn đối với "đối tượng" A với B, A với C và A với A đều sẽ có kết quả đúng nhưng sau khi ghi đè, chỉ khi đối tượng A so với đối tượng A sẽ trả về đúng khi các so sánh khác sẽ trả về sai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.