it-swarm-vi.com

Vấn đề phỏng vấn bảng trắng yêu thích của bạn là gì?

Đúng như tiêu đề đã nói, vấn đề phỏng vấn bảng trắng yêu thích của bạn là gì và tại sao nó lại được chứng minh hiệu quả với bạn?

Junior, Senior, Java, C, Javascript, PHP, SQL, mã giả, v.v.

52
Nicole

Tôi yêu cầu ứng viên thiết kế giải pháp cho một vấn đề tôi thực sự gặp phải trong công việc hàng ngày của tôi. Làm như vậy, tôi cố gắng tạo một hộp thoại giữa tôi và ứng viên. Tôi cố gắng thảo luận về thiết kế mà anh ta đang xây dựng như thể tôi chưa bao giờ nghĩ về vấn đề trước đây.

Những gì tôi cố gắng đánh giá là liệu chúng tôi có thể hiểu nhau hay không, và liệu chúng tôi có thể nói về một vấn đề kỹ thuật mà không nhầm lẫn.

Ví dụ cụ thể

(Dành cho a Java nhà phát triển máy tính để bàn)

Thiết kế API để xử lý lịch sử điều hướng của trình duyệt web (trang trước, trang tiếp theo, liệt kê 10 trang trước) và có thể sử dụng lại ở nhiều phần của ứng dụng (ở đây tôi đưa ra ví dụ cụ thể trong ứng dụng của chúng tôi). Sau đó, phác thảo một thực hiện.

Tôi thích cái này, vì nó đủ đơn giản, dễ minh họa, nó có thể được giải quyết từng bước (thêm các hành vi bổ sung mà không phá vỡ mọi thứ), nó cho phép nói về các trường hợp Edge và xử lý lỗi, và nó cũng cho phép nói về dữ liệu cấu trúc.

22
barjak

Tôi đã tìm thấy điều này cực kỳ sáng sủa khi phỏng vấn ứng viên và lọc ra những người không có kinh doanh ở đó. Nó tương tự như phức tạp với Fizz Buzz, nhưng tập trung vào các kỹ năng cơ sở dữ liệu.

Assuming the following basic  table structure
Documents (DocID, DocDate)
Keywords (KeyWordID, KeyWord)
DocumentKeywords (DocID,KeywordID)

Write a query to return the following:
Part 1: Documents with a DocDate after 4/1/1995  
Part 2: Documents that contain the keyword "Blue"  
Part 3: Documents that contain the either the keyword "Blue" or "Yellow"
Part 4: Documents that contain the both the keywords "Blue" and "Yellow"

Tôi cho phép họ viết nó trong bất kỳ biến thể SQL nào họ muốn và không quá cầu kỳ về các vấn đề cú pháp nhỏ. Tôi chủ yếu muốn biết rằng họ hiểu các khái niệm DB quan hệ cơ bản.

Hầu hết các ứng viên có thể vượt qua phần 3 mà không có vấn đề gì cả. Bạn sẽ ngạc nhiên khi nhiều người nghĩ rằng câu trả lời cho phần 4 chỉ là thay đổi toán tử từ OR thành AND trong mệnh đề where.

40
JohnFx

"Vẽ cho tôi trên bảng trắng thiết kế của dự án cuối cùng bạn làm, mà không tiết lộ cho tôi bất kỳ chi tiết nhạy cảm nào."

20
Uberto

Triển khai strcpy, strcmp và bạn bè.

14
fredoverflow

Yêu thích của tôi bao gồm một vài môn học là đếm số lượng nút trong cây nhị phân được cung cấp giao diện (trong C #):

public interface IBinaryTree<T>
{
    IBinaryTree<T> Left
    {
        get;
    }

    IBinaryTree<T> Right
    {
        get;
    }

    T Data
    {
        get;
    }

    // Other properties and methods not germane to this problem.
}

và chỉ để giải trí, đây là cách thực hiện, mặc dù người được phỏng vấn không cần phải thấy điều này.

public sealed class BinaryTree<T> : IBinaryTree<T>
{
    private readonly IBinaryTree<T> left;

    private readonly IBinaryTree<T> right;

    private readonly T data;

    public BinaryTree(
        IBinaryTree<T> left,
        IBinaryTree<T> right,
        T data)
    {
        this.left = left;
        this.right = right;
        this.data = data;
    }

    public IBinaryTree<T> Left
    {
        get
        {
            return this.left;
        }
    }

    public IBinaryTree<T> Right
    {
        get
        {
            return this.right;
        }
    }

    public T Data
    {
        get
        {
            return this.data;
        }
    }

    // Other properties and methods not germane to this problem.
}

và lớp trợ lý:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        // TODO: What goes here?
    }
}

Giải pháp tôi muốn thấy là đây:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        return tree == null
            ? 0
            : 1 + tree.Left.CountNodes() + tree.Right.CountNodes();
    }
}

Vì nó thể hiện kiến ​​thức về:

  • làm thế nào một cây (đặc biệt là cây nhị phân)
  • định nghĩa đệ quy của cây nhị phân
  • phương pháp đệ quy và cách các trường hợp cơ sở dừng đệ quy
  • đếm một nút có nghĩa là gì
  • giao diện như một hợp đồng
  • (ít quan trọng hơn) kiến ​​thức về cú pháp C #: [.__.]
    • thuốc generic
    • phương pháp mở rộng
    • điều hành ternary
14
Jesse C. Slicer

Hai câu hỏi đã gợi ra những cuộc thảo luận thú vị về bảng trắng đối với tôi là

  1. "Xin vui lòng bạn có thể giải thích chi tiết như bạn muốn làm thế nào một trình duyệt web có được một trang được tạo ra"
  2. "Hãy giải thích cách Java Hibernate hoạt động"

Họ bắt đầu đơn giản và sau đó trở nên phức tạp hơn.

12
Gary Rowe

Tôi không thích sử dụng câu đố hay câu hỏi thiết kế làm câu hỏi bảng trắng. Tôi thích các câu hỏi đơn giản, đơn giản, kiểm tra khả năng viết một số mã của ứng viên. Yêu thích của tôi là:

1) Viết hàm để đảo ngược danh sách liên kết đơn. (Phải mất một lúc trước khi họ nhận ra họ cần 3 con trỏ.)

2) Cho một cây nhị phân, tìm độ sâu của cây nhị phân. (Câu hỏi này kiểm tra khả năng viết mã đệ quy của họ. Hãy cho tôi kiểm tra xem họ có còn trường hợp cơ sở không.)

3) Viết thủ tục tìm kiếm nhị phân một mảng các số nguyên. .

8
pyNem

Chúng tôi đã sử dụng điều này tại một công ty tôi làm việc.

Chúng tôi đưa cho thí sinh một mảnh giấy dùng để theo dõi thời gian. Đó là một bảng thời gian thực sự được sử dụng bởi một hoặc các bộ phận của chúng tôi. Chúng tôi đã yêu cầu ứng viên hướng dẫn chúng tôi trong quá trình thiết kế để tạo ra một công cụ theo dõi thời gian tốt hơn. Không có ranh giới, không nói ngôn ngữ gì, v.v., chỉ muốn xem ứng viên giỏi đến mức nào trong "vòng đời đầy đủ". Nó đã cho chúng tôi một cái nhìn sâu sắc thực sự về cách họ thu thập các yêu cầu. Cách họ cấu trúc các bảng cơ sở dữ liệu, loại UI nào họ có thể làm. Kỹ năng giao tiếp rõ ràng là cần thiết cho nhiệm vụ này. Nó thường được thực hiện trong một căn phòng có nhiều bảng trắng lớn và kéo dài tới 2 giờ.

Chúng tôi đã thuê một số người sử dụng quy trình này và nếu họ thực sự làm tốt nhiệm vụ thì họ đã làm rất tốt cho chúng tôi. Nếu họ là những người ngoài lề và chúng tôi quyết định thuê họ bằng mọi cách (chủ đề riêng biệt) thì họ là những lập trình viên cận biên.

7
Bill Leeper

Tôi sử dụng một vấn đề có liên quan đến lĩnh vực lập trình của tôi.

Nếu tôi phát triển các ứng dụng web, tôi muốn xem làm thế nào họ có thể tạo ra một biểu mẫu web để xóa các bản ghi và cách tiếp cận họ có thể thực hiện để xóa bản ghi khỏi cơ sở dữ liệu. Điều này cho tôi biết nếu họ biết các nguyên tắc cơ sở dữ liệu cơ bản, cách họ tương tác với người dùng để xác minh xóa và nếu họ biết xóa mềm là gì.

Tôi không có một yêu thích. Vấn đề tôi chọn sẽ thay đổi rất nhiều tùy thuộc vào công việc.

Tôi không quan tâm liệu họ có thể giải quyết vấn đề hoàn toàn hay không trong một cuộc phỏng vấn, họ sử dụng công nghệ và ngôn ngữ nào, hoặc mã của họ trông như thế nào trên bảng trắng. Tôi đang tìm kiếm một mô hình suy nghĩ; Tôi muốn xem họ có biết suy nghĩ và giải quyết vấn đề không.

6
Robert Harvey

Yêu thích của tôi là một người bạn của tôi sử dụng.

Viết cho tôi một hàm để tạo/in/lưu trữ các số nguyên tố "n" đầu tiên và sau đó giải thích cách thức hoạt động và hiệu quả của nó.

Nó hoạt động tốt bởi vì:

  1. Đó là một câu hỏi thuật toán vì vậy nó đòi hỏi người được phỏng vấn phải có khả năng suy nghĩ và sau đó giải thích suy nghĩ của họ - để bạn có thể thấy bộ não của họ hoạt động như thế nào.

  2. Đó là ngôn ngữ độc lập.

  3. Hầu như không ai hiểu đúng hoàn toàn (thông thường trường hợp Edge họ bỏ lỡ (1 hoặc 2 bình thường) hoặc họ không xử lý các số âm, vì vậy bạn có thể xem cách họ xử lý lỗi và được thông báo rằng họ đã sai.

  4. Hầu hết làm điều đó như một cái sàng đơn giản nhưng rất chậm (ví dụ 80% mọi người sẽ kiểm tra n là số nguyên tố bằng cách chia n cho tất cả các số nguyên nhỏ hơn n), cung cấp cho bạn nhiều phạm vi cho các cuộc hội thoại về cách họ có thể cải thiện thuật toán dựa trên đánh đổi không gian/thời gian, vd "tại sao bạn chia một số cho 4 nếu bạn đã biết nó không chia hết cho 2?" hoặc "Bạn đã làm việc rằng bạn chỉ cần chia cho tất cả các số nguyên tố nhỏ hơn sqrt (n), nhưng điều đó đòi hỏi bạn phải lưu trữ những số đó ở đâu đó, vậy ý ​​nghĩa của điều đó là gì?")

Không cần họ phải trả lời đúng. Nếu ai đó có thể suy nghĩ và giải thích suy nghĩ của họ thì họ sẽ đi một chặng đường dài để trở thành một ứng cử viên sáng giá.

4
Rhys Gibson

Nó thực sự phụ thuộc vào những gì bạn đang tìm kiếm, vì một tổ chức thực hiện nhiều công việc web động liên quan đến hình ảnh, tôi có xu hướng muốn hỏi một câu hỏi hình học phù hợp với công việc. Trong mọi trường hợp, tôi có xu hướng hỏi một câu hỏi hình học, vì tôi thấy đây là một bài kiểm tra toán tốt, đẹp và trực quan và có thể cho thấy một ứng viên có khả năng trình bày trực quan công việc và phương pháp làm việc của họ thông qua một vấn đề.

Đối với các ứng viên nâng cao, thỉnh thoảng tôi đưa ra câu hỏi sau:

Hình ảnh này cho thấy một mặt trăng lưỡi liềm. Chiều rộng của lưỡi liềm từ B đến D là 9cm và giữa E và F, 5cm. C là tâm của đường tròn lớn hơn.

a) Hãy tính diện tích của hình lưỡi liềm. Crescent Moon Maths Question

b) Mô tả các tính toán cần thiết để thay đổi kích thước hình ảnh để phù hợp với vòng tròn bên trong từ bất kỳ kích thước cụ thể nào và đặt nó trong vòng tròn nếu biết điểm trung tâm.

Đối với một câu hỏi dễ hơn, tôi thường đưa ra một loại câu hỏi tương tự, nhưng sử dụng ví dụ "hình vuông trong một hình tròn trong hình vuông". Mặc dù điều này rất dễ dàng, vì vậy tôi mong đợi đại số hoàn hảo về nó.

Square inside a circle inside a square

Hơn hết, tôi có xu hướng yêu cầu họ đưa ra một thuật toán để tạo ra tất cả các kết hợp của một tập dữ liệu có độ dài thay đổi.

3
Orbling

Câu trả lời hay nhất FizzBuzz tôi đã thấy là:

Máy chủ SQL 2008

;WITH mil AS (
 SELECT TOP 100 ROW_NUMBER() OVER ( ORDER BY c.column_id ) [n]
 FROM master.sys.all_columns as c
 CROSS JOIN master.sys.all_columns as c2
)                
 SELECT CASE WHEN n  % 3 = 0 THEN
             CASE WHEN n  % 5 = 0 THEN 'FizzBuzz' ELSE 'Fizz' END
        WHEN n % 5 = 0 THEN 'Buzz'
        ELSE CAST(n AS char(6))
     END + CHAR(13)
 FROM mil

C # (đơn giản)

foreach (int number in Enumerable.Range(1, 100))
{
    bool isDivisibleBy3 = (number % 3) == 0;
    bool isDivisibleBy5 = (number % 5) == 0;

    if (isDivisibleBy3)
         Console.Write("Fizz");

    if (isDivisibleBy5)
         Console.Write("Buzz");

    if (!isDivisibleBy3 && !isDivisibleBy5)
         Console.Write(number);

    Console.WriteLine();
}

C # (thông minh)

 Enumerable
  .Range(1, 100)
  .Select(i =>
    i % 15 == 0 ? "FizzBuzz" :
    i % 5 == 0 ? "Buzz" :
    i % 3 == 0 ? "Fizz" :
    i.ToString())
  .ToList()
  .ForEach(s => Console.WriteLine(s));
3
Simon Hughes

Một cái gì đó gọi là aff_z, một phần trong các kỳ thi C của trường kỹ thuật của tôi và đã được sử dụng như một bài kiểm tra "giả" để học sinh thất bại khi trở về từ kỳ nghỉ (hệ thống chấm điểm của chúng tôi ngụ ý rằng việc không làm bài kiểm tra đã dừng việc chấm bài, vì vậy việc trượt bài kiểm tra giả sẽ thất bại làm mất hiệu lực toàn bộ bài kiểm tra của bạn. Buộc bạn phải chú ý đến các chi tiết biến thái). Tôi đã tái sử dụng nó một hoặc hai lần trong các cuộc phỏng vấn.

Dù sao ... tôi đã quên công thức chính xác nhưng nó là một thứ như thế này ...

Write a function taking a single char parameter named c and returning nothing (void).
You function must satisfy the following requirements:

 - if c is bigger or equal to 0, then print 'z' to standard output
 - if c is stricly smaller than 0 , then print 'z' to standard output
 - in any other case, print the letter 'z' to standard output

Điều đáng buồn là không chỉ một số sinh viên sẽ đưa ra các giải pháp cực kỳ phức tạp khi câu trả lời khá rõ ràng, mà một số thậm chí còn thất bại.

Và tin hay không, nó cũng đã xảy ra trong các cuộc phỏng vấn.

Chạy nó trong các cuộc phỏng vấn khá thú vị, vì một số ứng viên sẽ bắt đầu viết các nhánh có thể và sau đó nhận ra điều gì là sai (rõ ràng, nếu bạn chỉ hỏi họ bằng miệng, điều đó khá dễ hiểu khi họ nói như vậy ... nhưng nếu bạn viết nó ra, tôi thấy khó hiểu ...)

Thật ngớ ngẩn, nhưng tôi đoán đó là một sàng lọc tối giản (tương tự, khi tuyển dụng các lập trình viên JS, tôi luôn hỏi làm thế nào để khai báo một biến, và sau đó tùy thuộc vào câu trả lời của họ có hay không sử dụng var có làm thay đổi gì không. thành thật.)

3
haylem

Tôi tìm kiếm một vài điều trong các ứng cử viên mà tôi đã phỏng vấn. Vì lý do tôi không thể mô tả trực tuyến, chúng tôi nhận được các ứng cử viên khá nghèo và tôi đã mong đợi điều đó, vì vậy tôi khá dễ dàng với họ. Thậm chí, tôi vẫn tìm:

  • Nhận thức về thiết kế.

    "Hiển thị cho tôi cấu trúc bảng cho chương trình sổ địa chỉ có Danh bạ có tên và họ có thể có nhiều Số điện thoại với mô tả về số (ô/nhà/cơ quan/v.v.)"

    Tôi không tìm kiếm một sơ đồ đặc tả UML 2.0 ở đây, một sơ đồ bong bóng đơn giản ở đây là tốt. Miễn là nó hợp lý.

  • Kiến thức làm việc với cơ sở dữ liệu (ví dụ: SQL)

    1. Viết một truy vấn để có được tất cả các số điện thoại cho những người có tên cuối cùng "smith"
    2. Viết một truy vấn để có được tất cả các khách hàng trong cơ sở dữ liệu và các số điện thoại cho những người có tên cuối cùng "smith"
  • Kiến thức về kiểm tra

    Giả sử một phương thức có chữ ký public IEnumerable<PhoneNumber> GetPhoneNumbers(string lastName) tồn tại trả về kết quả truy vấn của bạn từ trước đó. Giả sử rằng nếu bạn truyền null vào phương thức, nó sẽ ném NullReferenceException. Viết một bài kiểm tra để chứng minh chức năng này.

    Viết một bài kiểm tra chứng minh rằng GetPhoneNumbers sẽ trả về số điện thoại nhà của (123)456-7890 cho một người có tên cuối cùng là "smith".

  • Kiến thức về cách viết một số mã

    Thực hiện một phương pháp sẽ đáp ứng các yêu cầu của các bài kiểm tra bạn đã viết.


Xem xét số lượng và chất lượng của các ứng viên chúng tôi đã nhận được, tôi đã phỏng vấn tất cả những người từng áp dụng nghiêm túc. Tôi đã thuê không ai.

2
Steven Evers

Viết thuật toán cho bài toán sau: Cho một số n, xuất tổng số cây nhị phân (duy nhất) có n nút.

Do đó, for n= 0 và n= 1, câu trả lời là 1. For n= 2, bạn có 2: nút gốc, và sau đó là nút thứ hai ở bên trái hoặc bên phải.

Bạn có thể hiểu rõ hơn về các kỹ thuật thiết kế và để xem liệu họ có nghĩ đến đệ quy hoặc ghi nhớ hoặc giải pháp lập trình động hay không.

[Xem thêm StackOverflow này thảo luận để biết trường hợp cây tìm kiếm nhị phân có liên quan, nhưng khác nhau.]

2
Macneil

Nếu tôi phỏng vấn một nhà phát triển phần mềm, tôi sẽ yêu cầu anh ta thiết kế một phần mềm và mô tả các yêu cầu phần cứng để xóa các mục trùng lặp khỏi một tệp lớn tùy ý chứa tên đầy đủ trên mỗi dòng. Tôi để lại một số phần của mô tả vấn đề mơ hồ có chủ đích. Sau đó, tôi thách thức anh ta xem anh ta có hiểu phân tích và làm rõ các yêu cầu, sự đánh đổi khác nhau, cấu trúc dữ liệu và thuật toán, I/O (lưu trữ thứ cấp), công nghệ phần mềm và phần cứng, khả năng mở rộng, v.v.

Tôi nghĩ rằng đây là một vấn đề nhỏ nhưng đầy thách thức, tiết lộ kiến ​​thức và khả năng của ứng viên trong nhiều lĩnh vực điện toán.

2
Ebrahim Mohammadi

Vấn đề bảng trắng C++ yêu thích của tôi là để ứng viên thực hiện

Vector3 a(1, 0, 0), b(0, 1, 0); // Mathematical 3D vectors
double c = 7.0;
double d = a * c;
Vector3 e = a * b;

Từ đây tôi có thể học

  • nếu ứng viên nhận ra rằng bạn không thể quá tải đối với loại trả về (dấu hiệu của C++ cấp độ juniour)
  • nếu ứng viên biết cách trả về một toán tử đúc tạm thời và thực hiện các toán tử đúc (chỉ ra mức trung cấp C++)
  • nếu ứng viên có thể làm toán vector cơ bản (quan trọng đối với miền ứng dụng của chúng tôi)
2
smithco

Implement function/method(on c/c++/c# whatever), which calculates n-th item of Fibonacci sequence

Nhiều kẻ có thể mắc kẹt về điều này. Nếu một số giải pháp được đưa ra - thường thì nó sử dụng đệ quy. Sau đó:

Implement the same via 'for'-loop

Không thể cho bạn biết, có bao nhiêu nghiên cứu sinh không hoàn thành cả hai nhiệm vụ - 50% ứng cử viên.
[.__.] Đó là lý do tại sao tôi thích nó :)

2
alexb

Đối với cơ sở dữ liệu tôi đi với:

Bảng: Mọi thứ [.__.] [.__.] Tên ID [.__.] 1 Bodkin Van Horn [.__.] 2 Hoos-Foos [.__.] 3 Hoos-Foos [.__.] 4 Hot- Bắn [.__.] 5 Marvin O'Gravel Balloon Face [.__.] 6 Snimm [.__.] 7 Marvin O'Gravel Balloon Face [.__.] 8 Marvin O'Gravel Balloon Face [.__.] 9 Dave

Viết cho tôi một số SQL sẽ sao chép lại một bảng như thế này dựa trên tên (và tôi không quan tâm ID nào tôi nhận được nhưng cái nào được trả về phải hợp lệ cho tên đó). Vì vậy, bảng một khi SQL chính xác đã được áp dụng cho nó sẽ hiển thị một cái gì đó như:

Bảng: Mọi thứ [.__.] [.__.] Tên ID [.__.] 1 Bodkin Van Horn [.__.] 2 Hoos-Foos [.__.] 4 Hot-Shot [.__.] 5 Marvin O 'Mặt bong bóng sỏi [.__.] 6 Snimm [.__.] 9 Dave

Tôi thích nó bởi vì:

  • Khử trùng lặp là một vấn đề thực tế
  • Có rất nhiều cách để làm điều đó
  • Tôi nghĩ rằng hầu như tất cả các cách đó đều cần bạn hiểu (hơi) SQL phức tạp hơn (về cơ bản là NHÓM THEO và HAVING) hoặc khả năng suy luận thông qua nhiều câu lệnh đơn giản hơn.
  • Vì chút cuối cùng này ngay cả khi họ đang vật lộn với cú pháp hay bất cứ điều gì, bạn có thể hỏi họ xem họ đang nghĩ gì và nói theo cách đó.
  • Nó tham khảo Tiến sĩ Seuss

(Đây là nơi tôi thấy rằng có một số cách hoàn toàn tầm thường để làm điều này và tôi đã quá phức tạp trong suốt những năm qua).

2
Jon Hopkins

Tôi thường để họ phác thảo sơ đồ khối của hệ thống cuối cùng mà họ đã làm việc, hỏi về mối quan hệ giữa các khối và hơn là để họ giải thích về khối mà họ đang làm việc/phụ trách. Bạn có thể học được nhiều điều từ bài tập này, như cách người ta nhìn xa hơn phạm vi nhỏ của anh ta, anh ta quan trọng đến mức nào khi biết anh ta đang diễn ở đâu, bạn cũng có thể tìm hiểu về vai trò của mình, đó là chìa khóa hay phụ vai trò.

2
Assimiz

Làm thế nào bạn sẽ đại diện cho một bộ bài 52 tiêu chuẩn? Bất kỳ ngôn ngữ lập trình là tốt. Làm thế nào bạn sẽ xáo trộn các thẻ?

2
MrDatabase

Bạn có một cái bát với 200 con cá trong đó. Trong số này, 99% không phải là cá bảy màu. Bạn nên loại bỏ bao nhiêu con cá để 2% số còn lại là cá bảy màu. Chỉ ra công việc của bạn.

Đây là về các yêu cầu khó hiểu. Người ta nói cách này để thay đổi quan điểm nhiều lần trong cùng một câu hỏi. Nó có nghĩa là để xem nếu họ có thể tìm ra những gì đang thực sự xảy ra.

Bạn sẽ ngạc nhiên khi có nhiều người hiểu sai.

1
dacracot

Một câu hỏi mà tôi đã sử dụng kể từ khi nó được sử dụng cho tôi là:

Viết hàm để in tất cả các số từ 1 đến 100.

Một phần lớn lý do mà tôi đã sử dụng nó là do thực tế là sau đó bạn có thể đưa giải pháp đó và di chuyển theo nhiều hướng khác nhau:

Làm thế nào bạn có thể sửa đổi chức năng để in tất cả các số trong khoảng từ 1 đến 1000, 10000 hoặc n?

Câu trả lời của họ cho những câu hỏi này có thể cung cấp cho bạn cái nhìn sâu sắc về cách họ đáp ứng với các yêu cầu thay đổi cũng như liệu họ có thể nhận ra các cân nhắc về hiệu suất. Một ứng cử viên mạnh có thể trả lời bằng một câu hỏi liên quan đến chức năng cần thiết cho mức độ thường xuyên được gọi.

Di chuyển theo một hướng khác:

Làm thế nào bạn sẽ thay đổi mọi thứ nếu bạn biết chức năng này sẽ được gọi nhiều lần trong một phút và hiệu suất là một mối quan tâm?

Tôi sử dụng điều này như một cách để kiểm tra suy nghĩ bên của họ. Vì việc tính các số nguyên tố có thể chậm khi giá trị tối đa trở nên lớn hơn nên đôi khi có ý nghĩa hơn khi chỉ sử dụng một số loại bảng tra cứu được tính toán hoặc tính toán trước được điều chỉnh trên cơ sở vấn đề bạn đang cố gắng giải quyết.

1
rjzii

Đây là một điều để kích thích một số suy nghĩ - Nó đơn giản, liên quan đến một chút toán học và kiểm tra kiến ​​thức của ứng viên về thiết kế máy tính cơ bản (tràn, biểu diễn số, v.v.):

Viết chương trình (hoặc thủ tục) lấy một cặp số nguyên X, Y làm đầu vào và xác định xem X * Y có chia hết cho 10. LƯU Ý QUAN TRỌNG: X và Y có thể đủ lớn để X * Y vượt qua loại số nguyên lớn nhất hiện có trên máy của bạn.



T_BOOL MultipleOfTen(int x, int y)
{
    return((x%2==0 || y%2==0) && (x%5==0 || y%5==0));
}
1
oosterwal

Yêu thích của tôi là bắt đầu với việc hỏi nguyên mẫu của printf. Sau đó được cung cấp một printc API cấp thấp (char c), sẽ in một ký tự, thực hiện printf. Cung cấp tất cả các loại phản hồi thú vị như ngăn xếp là một phần của CPU. Như bạn có thể đoán tôi đến từ nền C và nhúng.

1
aufather

Tôi có một vài mục yêu thích, nhưng đây là một cặp đôi gần như luôn luôn xuất hiện. Hầu hết thời gian tôi đang thực hiện các cuộc phỏng vấn kỹ thuật vòng cuối (C++) để ưu tiên các câu hỏi dài hơn và cởi mở hơn dẫn đến các lĩnh vực mới quan tâm. Không có câu trả lời "đúng", chỉ là mở đầu cho cuộc trò chuyện khác.

1) Thực hiện một con trỏ chia sẻ cơ bản, giải thích về những thiếu sót so với các con trỏ được chia sẻ của tr1 hoặc boost trong việc triển khai, cách sử dụng nó, v.v.

2) Một đánh giá mã. Đối với những người được thuê có kinh nghiệm, chúng tôi hy vọng họ có thể tự tin xem xét một số mã được cung cấp cho các vấn đề thiết kế, lỗi, nỗi kinh hoàng mã hóa và các vấn đề về khả năng bảo trì tiềm năng. Ngoài ra, tất nhiên, làm thế nào họ sẽ sửa nó; và đôi khi họ sẽ gửi thông điệp đó cho nhà phát triển cơ sở mà họ đang bắn hạ.

1
Alaric

Điền vào phương thức sau: PS Chế độ của một số là số (trong danh sách) có nhiều lần xuất hiện nhất.

public int getMode(List<Integer> numberList) {


}

Đây là để xem effecient là mã của bạn.

0
Buhake Sindi