Hướng dẫn tsiege tech interview cheat sheet - bảng gian lận phỏng vấn công nghệ tsiege

Bảng gian lận phỏng vấn công nghệ

Danh sách này có nghĩa là cả hướng dẫn nhanh và tham khảo để nghiên cứu thêm về các chủ đề này. Về cơ bản, đó là một bản tóm tắt về khóa học Comp Sci mà bạn chưa bao giờ tham gia hoặc quên mất, vì vậy không có cách nào nó có thể bao quát mọi thứ theo chiều sâu.

Đóng góp

Đây là một nguồn mở, dự án cộng đồng và tôi rất biết ơn tất cả sự giúp đỡ tôi có thể nhận được. Nếu bạn tìm thấy một sai lầm tạo PR và vui lòng có một nguồn để tôi có thể xác nhận sửa chữa. Nếu bạn có bất kỳ đề xuất, hãy thoải mái mở một vấn đề.

Thách thức

Dự án này hiện có những thách thức mã thực tế! Những thách thức này có nghĩa là để bao gồm các chủ đề bạn sẽ đọc dưới đây. Có lẽ bạn sẽ thấy họ trong một cuộc phỏng vấn và có thể bạn sẽ không. Dù bằng cách nào bạn có thể bạn sẽ học được điều gì đó mới. Bấm vào đây để xem nhiều hơn

Mục lục

  • Ký hiệu tiệm cận
  • Cấu trúc dữ liệu
    • Mảng
    • Danh sách liên kết
    • Bảng băm hoặc bản đồ băm
    • Cây nhị phân
  • Thuật toán
    • Thuật toán cơ bản
    • Thuật toán tìm kiếm
      • Tìm kiếm đầu tiên
      • Độ sâu tìm kiếm đầu tiên
    • Sắp xếp thuật toán
      • Lựa chọn sắp xếp
      • Sắp xếp chèn
      • Hợp nhất sắp xếp
      • Sắp xếp nhanh chóng
  • Tài nguyên bổ sung

Ký hiệu tiệm cận

Definition:

Cấu trúc dữ liệu

Mảng

Danh sách liên kết

  • Bảng băm hoặc bản đồ băm
  • Cây nhị phân
  • Thuật toán
  • Thuật toán cơ bản
  • Thuật toán tìm kiếm
  • Tìm kiếm đầu tiên
  • Độ sâu tìm kiếm đầu tiên

Sắp xếp thuật toán

Lựa chọn sắp xếp

Hướng dẫn tsiege tech interview cheat sheet - bảng gian lận phỏng vấn công nghệ tsiege

Sắp xếp chèn

Hợp nhất sắp xếp

Sắp xếp nhanh chóng

Tài nguyên bổ sung

Ký hiệu tiệm cận là ký hiệu độc lập phần cứng được sử dụng để cho biết độ phức tạp về thời gian và không gian của thuật toán. Có nghĩa là đó là một cách đo tiêu chuẩn để đo lường số lượng bộ nhớ mà một thuật toán sử dụng hoặc thời gian nó chạy cho một đầu vào đã cho.

Sự phức tạp

Sau đây là tốc độ tăng trưởng tiệm cận từ tốt nhất đến tồi tệ nhất:

Tăng trưởng không đổi - Thời gian chạy O(1) là không đổi và không phát triển với n

  • Tăng trưởng logarit - O(log n) Thời gian chạy tăng lên theo tỷ lệ hợp lý với n
  • Tăng trưởng tuyến tính - O(n) Thời gian chạy tăng tương ứng với n
  • Tăng trưởng siêu tuyến - O(n log n) Thời gian chạy tăng theo tỷ lệ và logarit thành n
  • Tăng trưởng đa thức -
    greedy algorithm (array)
      var largest difference = 0
      var new difference = find next difference (array[n], array[n+1])
      largest difference = new difference if new difference is > largest difference
      repeat above two steps until all differences have been found
      return largest difference
    
    0 Thời gian chạy phát triển nhanh hơn trước đây dựa trên n
  • Tăng trưởng theo cấp số nhân - thời gian chạy
    greedy algorithm (array)
      var largest difference = 0
      var new difference = find next difference (array[n], array[n+1])
      largest difference = new difference if new difference is > largest difference
      repeat above two steps until all differences have been found
      return largest difference
    
    2 thậm chí còn phát triển nhanh hơn tăng trưởng đa thức dựa trên n

Cấu trúc dữ liệu

Mảng

Danh sách liên kết

  • Bảng băm hoặc bản đồ băm
  • Cây nhị phân
  • Thuật toán

Tăng trưởng không đổi - Thời gian chạy O(1) là không đổi và không phát triển với n

  • Tăng trưởng logarit - O(log n) Thời gian chạy tăng lên theo tỷ lệ hợp lý với n
  • Tăng trưởng tuyến tính - O(n) Thời gian chạy tăng tương ứng với n, or one dimensional arrays, are the most basic.
    • Tăng trưởng siêu tuyến - O(n log n) Thời gian chạy tăng theo tỷ lệ và logarit thành n
  • Tăng trưởng đa thức -
    greedy algorithm (array)
      var largest difference = 0
      var new difference = find next difference (array[n], array[n+1])
      largest difference = new difference if new difference is > largest difference
      repeat above two steps until all differences have been found
      return largest difference
    
    0 Thời gian chạy phát triển nhanh hơn trước đây dựa trên n
    are like one dimensional arrays, but have reserved space for additional elements.
    • Tăng trưởng theo cấp số nhân - thời gian chạy
      greedy algorithm (array)
        var largest difference = 0
        var new difference = find next difference (array[n], array[n+1])
        largest difference = new difference if new difference is > largest difference
        repeat above two steps until all differences have been found
        return largest difference
      
      2 thậm chí còn phát triển nhanh hơn tăng trưởng đa thức dựa trên n
  • Tăng trưởng giai thừa -
    greedy algorithm (array)
      var largest difference = 0
      var new difference = find next difference (array[n], array[n+1])
      largest difference = new difference if new difference is > largest difference
      repeat above two steps until all differences have been found
      return largest difference
    
    4 Thời gian chạy phát triển nhanh nhất và nhanh chóng trở nên không sử dụng được đối với các giá trị nhỏ của n
    nested arrays that allow for multiple dimensions such as an array of arrays providing a 2 dimensional spacial representation via x, y coordinates.

Độ phức tạp về thời gian

  • Lập chỉ mục: mảng tuyến tính: O(1), mảng động: O(1)
  • Tìm kiếm: mảng tuyến tính: O(n), mảng động: O(n)
  • Tìm kiếm tối ưu hóa: Mảng tuyến tính: O(log n), Mảng động: O(log n)
  • Chèn: Mảng tuyến tính: N/A, mảng động: O(n)

Danh sách liên kết

Sự định nghĩa

  • Lưu trữ dữ liệu với các nút trỏ đến các nút khác.nodes that point to other nodes.
    • Các nút, ở cơ bản nhất, nó có một mốc và một tham chiếu (một nút khác).
    • Một chuỗi danh sách được liên kết các nút với nhau bằng cách trỏ một tham chiếu của một nút về phía một nút khác.

Những gì bạn cần biết

  • Được thiết kế để tối ưu hóa chèn và xóa, chậm trong việc lập chỉ mục và tìm kiếm.
  • Danh sách liên kết gấp đôi có các nút cũng tham chiếu nút trước đó. has nodes that also reference the previous node.
  • Danh sách liên kết tròn là danh sách được liên kết đơn giản có đuôi, nút cuối cùng, tham chiếu đầu, nút đầu tiên. is simple linked list whose tail, the last node, references the head, the first node.
  • Ngăn xếp, thường được triển khai với các danh sách được liên kết nhưng cũng có thể được thực hiện từ các mảng., commonly implemented with linked lists but can be made from arrays too.
    • Các ngăn xếp là cấu trúc dữ liệu cuối cùng, ra (LIFO).last in, first out (LIFO) data structures.
    • Được thực hiện với một danh sách được liên kết bằng cách có đầu là nơi duy nhất để chèn và loại bỏ.
  • Hàng đợi, cũng có thể được thực hiện với một danh sách được liên kết hoặc một mảng., too can be implemented with a linked list or an array.
    • Hàng đợi là cấu trúc dữ liệu đầu tiên trong (FIFO) đầu tiên.first in, first out (FIFO) data structure.
    • Được thực hiện với một danh sách được liên kết chỉ loại bỏ khỏi đầu và thêm vào đuôi.

Độ phức tạp về thời gian

  • Lập chỉ mục: Danh sách được liên kết: O(n)
  • Tìm kiếm: Danh sách được liên kết: O(n)
  • Tìm kiếm được tối ưu hóa: Danh sách được liên kết: O(n)
  • Phụ lục: Danh sách được liên kết: O(1)
  • Dự bị: Danh sách được liên kết: O(1)
  • Chèn: Danh sách được liên kết: O(n)

Bảng băm hoặc bản đồ băm

Sự định nghĩa

  • Lưu trữ dữ liệu với các nút trỏ đến các nút khác.
  • Các nút, ở cơ bản nhất, nó có một mốc và một tham chiếu (một nút khác). accept a key and return an output unique only to that specific key.
    • Một chuỗi danh sách được liên kết các nút với nhau bằng cách trỏ một tham chiếu của một nút về phía một nút khác.hashing, which is the concept that an input and an output have a one-to-one correspondence to map information.
    • Những gì bạn cần biết

Những gì bạn cần biết

  • Được thiết kế để tối ưu hóa chèn và xóa, chậm trong việc lập chỉ mục và tìm kiếm.
  • Danh sách liên kết gấp đôi có các nút cũng tham chiếu nút trước đó. are when a hash function returns the same output for two distinct inputs.
    • Danh sách liên kết tròn là danh sách được liên kết đơn giản có đuôi, nút cuối cùng, tham chiếu đầu, nút đầu tiên.
    • Ngăn xếp, thường được triển khai với các danh sách được liên kết nhưng cũng có thể được thực hiện từ các mảng.
  • Các ngăn xếp là cấu trúc dữ liệu cuối cùng, ra (LIFO).

Độ phức tạp về thời gian

  • Được thực hiện với một danh sách được liên kết bằng cách có đầu là nơi duy nhất để chèn và loại bỏ.
  • Hàng đợi, cũng có thể được thực hiện với một danh sách được liên kết hoặc một mảng.
  • Hàng đợi là cấu trúc dữ liệu đầu tiên trong (FIFO) đầu tiên.

Được thực hiện với một danh sách được liên kết chỉ loại bỏ khỏi đầu và thêm vào đuôi.

Sự định nghĩa

  • Lưu trữ dữ liệu với các nút trỏ đến các nút khác.
    • Các nút, ở cơ bản nhất, nó có một mốc và một tham chiếu (một nút khác).

Một chuỗi danh sách được liên kết các nút với nhau bằng cách trỏ một tham chiếu của một nút về phía một nút khác.

Những gì bạn cần biết

  • Được thiết kế để tối ưu hóa chèn và xóa, chậm trong việc lập chỉ mục và tìm kiếm.
  • Danh sách liên kết gấp đôi có các nút cũng tham chiếu nút trước đó.degenerate tree is an unbalanced tree, which if entirely one-sided, is essentially a linked list.
  • Danh sách liên kết tròn là danh sách được liên kết đơn giản có đuôi, nút cuối cùng, tham chiếu đầu, nút đầu tiên.
  • Ngăn xếp, thường được triển khai với các danh sách được liên kết nhưng cũng có thể được thực hiện từ các mảng.binary search trees.
    • Các ngăn xếp là cấu trúc dữ liệu cuối cùng, ra (LIFO).
    • Được thực hiện với một danh sách được liên kết bằng cách có đầu là nơi duy nhất để chèn và loại bỏ.
    • Hàng đợi, cũng có thể được thực hiện với một danh sách được liên kết hoặc một mảng.
    • Hàng đợi là cấu trúc dữ liệu đầu tiên trong (FIFO) đầu tiên.
    • Được thực hiện với một danh sách được liên kết chỉ loại bỏ khỏi đầu và thêm vào đuôi.

Độ phức tạp về thời gian

  • Lập chỉ mục: Danh sách được liên kết: O(n)
  • Tìm kiếm: Danh sách được liên kết: O(n)
  • Tìm kiếm được tối ưu hóa: Danh sách được liên kết: O(n)

Phụ lục: Danh sách được liên kết: O(1)

Dự bị: Danh sách được liên kết: O(1)

Chèn: Danh sách được liên kết: O(n)

Sự định nghĩa

  • Lưu trữ dữ liệu với các nút trỏ đến các nút khác.
    • Các nút, ở cơ bản nhất, nó có một mốc và một tham chiếu (một nút khác). a conditional statement that is used to trigger the recursion.
    • Một chuỗi danh sách được liên kết các nút với nhau bằng cách trỏ một tham chiếu của một nút về phía một nút khác. a conditional statement that is used to break the recursion.

Những gì bạn cần biết

  • Được thiết kế để tối ưu hóa chèn và xóa, chậm trong việc lập chỉ mục và tìm kiếm. and stack overflow.
    • Danh sách liên kết gấp đôi có các nút cũng tham chiếu nút trước đó.
    • Danh sách liên kết tròn là danh sách được liên kết đơn giản có đuôi, nút cuối cùng, tham chiếu đầu, nút đầu tiên.
    • Ngăn xếp, thường được triển khai với các danh sách được liên kết nhưng cũng có thể được thực hiện từ các mảng.
    • Các ngăn xếp là cấu trúc dữ liệu cuối cùng, ra (LIFO).

Được thực hiện với một danh sách được liên kết bằng cách có đầu là nơi duy nhất để chèn và loại bỏ.

Sự định nghĩa

  • Lưu trữ dữ liệu với các nút trỏ đến các nút khác.
    • Các nút, ở cơ bản nhất, nó có một mốc và một tham chiếu (một nút khác).

Những gì bạn cần biết

  • Được thiết kế để tối ưu hóa chèn và xóa, chậm trong việc lập chỉ mục và tìm kiếm.
  • Danh sách liên kết gấp đôi có các nút cũng tham chiếu nút trước đó.
  • Danh sách liên kết tròn là danh sách được liên kết đơn giản có đuôi, nút cuối cùng, tham chiếu đầu, nút đầu tiên.

Ngăn xếp, thường được triển khai với các danh sách được liên kết nhưng cũng có thể được thực hiện từ các mảng.

  • Các ngăn xếp là cấu trúc dữ liệu cuối cùng, ra (LIFO).
    • Được thực hiện với một danh sách được liên kết bằng cách có đầu là nơi duy nhất để chèn và loại bỏ.
    • Hàng đợi, cũng có thể được thực hiện với một danh sách được liên kết hoặc một mảng.
  • Hàng đợi là cấu trúc dữ liệu đầu tiên trong (FIFO) đầu tiên. tend to use recursion. (i.e. Haskell)
  • Được thực hiện với một danh sách được liên kết chỉ loại bỏ khỏi đầu và thêm vào đuôi. tend to use iteration. (i.e. Ruby)
  • Lập chỉ mục: Danh sách được liên kết: O(n)

Tìm kiếm: Danh sách được liên kết: O(n)

Recursion                         | Iteration
----------------------------------|----------------------------------
recursive method (array, n)       | iterative method (array)
  if array[n] is not nil          |   for n from 0 to size of array
    print array[n]                |     print(array[n])
    recursive method(array, n+1)  |
  else                            |
    exit loop                     |

Thuật toán tham lam

Sự định nghĩa

  • Một thuật toán, trong khi thực thi, chỉ chọn thông tin đáp ứng một tiêu chí nhất định.
  • Năm thành phần chung, được lấy từ Wikipedia:
    • Một bộ ứng cử viên, từ đó một giải pháp được tạo ra.
    • Một chức năng lựa chọn, trong đó chọn ứng cử viên tốt nhất để được thêm vào giải pháp.
    • Một chức năng khả thi, được sử dụng để xác định xem một ứng cử viên có thể được sử dụng để đóng góp cho một giải pháp hay không.
    • Hàm mục tiêu, gán giá trị cho một giải pháp hoặc giải pháp một phần.
    • Một chức năng giải pháp, sẽ chỉ ra khi chúng ta đã phát hiện ra một giải pháp hoàn chỉnh.

Những gì bạn cần biết

  • Được sử dụng để tìm giải pháp phù hợp, mặc dù không tối ưu, cho một vấn đề nhất định.
  • Thường được sử dụng trên các bộ dữ liệu trong đó chỉ có một tỷ lệ nhỏ thông tin được đánh giá đáp ứng kết quả mong muốn.
  • Thông thường một thuật toán tham lam có thể giúp giảm O lớn của thuật toán.

Mã giả của một thuật toán tham lam để tìm sự khác biệt lớn nhất của bất kỳ hai số nào trong một mảng.

greedy algorithm (array)
  var largest difference = 0
  var new difference = find next difference (array[n], array[n+1])
  largest difference = new difference if new difference is > largest difference
  repeat above two steps until all differences have been found
  return largest difference

Thuật toán này không bao giờ cần phải so sánh tất cả các khác biệt với nhau, tiết kiệm toàn bộ một lần lặp.

Thuật toán tìm kiếm

Tìm kiếm đầu tiên

Sự định nghĩa

  • Một thuật toán tìm kiếm một cây (hoặc đồ thị) bằng cách tìm kiếm các mức của cây trước, bắt đầu từ gốc.
    • Nó tìm thấy mọi nút ở cùng một cấp độ, thường xuyên nhất là di chuyển từ trái sang phải.
    • Trong khi làm điều này, nó theo dõi các nút trẻ em của các nút ở cấp độ hiện tại.
    • Khi kiểm tra xong một cấp độ, nó di chuyển sang hầu hết các nút bên trái ở cấp độ tiếp theo.
    • Hầu hết các nút dưới cùng bên phải được đánh giá cuối cùng (nút sâu nhất và là quyền xa nhất của cấp độ của nó).

Những gì bạn cần biết

  • Được sử dụng để tìm giải pháp phù hợp, mặc dù không tối ưu, cho một vấn đề nhất định.
  • Thường được sử dụng trên các bộ dữ liệu trong đó chỉ có một tỷ lệ nhỏ thông tin được đánh giá đáp ứng kết quả mong muốn.
    • Thông thường một thuật toán tham lam có thể giúp giảm O lớn của thuật toán.depth first search.
    • Mã giả của một thuật toán tham lam để tìm sự khác biệt lớn nhất của bất kỳ hai số nào trong một mảng.

Thuật toán này không bao giờ cần phải so sánh tất cả các khác biệt với nhau, tiết kiệm toàn bộ một lần lặp.

  • Thuật toán tìm kiếm
  • Tìm kiếm đầu tiên
  • Một thuật toán tìm kiếm một cây (hoặc đồ thị) bằng cách tìm kiếm các mức của cây trước, bắt đầu từ gốc.

Nó tìm thấy mọi nút ở cùng một cấp độ, thường xuyên nhất là di chuyển từ trái sang phải.

Sự định nghĩa

  • Trong khi làm điều này, nó theo dõi các nút trẻ em của các nút ở cấp độ hiện tại.
    • Khi kiểm tra xong một cấp độ, nó di chuyển sang hầu hết các nút bên trái ở cấp độ tiếp theo.
    • Hầu hết các nút dưới cùng bên phải được đánh giá cuối cùng (nút sâu nhất và là quyền xa nhất của cấp độ của nó).
    • Tối ưu cho việc tìm kiếm một cây rộng hơn nó là sâu.
    • Sử dụng hàng đợi để lưu trữ thông tin về cây trong khi nó đi qua một cái cây.

Những gì bạn cần biết

  • Được sử dụng để tìm giải pháp phù hợp, mặc dù không tối ưu, cho một vấn đề nhất định.
  • Thường được sử dụng trên các bộ dữ liệu trong đó chỉ có một tỷ lệ nhỏ thông tin được đánh giá đáp ứng kết quả mong muốn.
    • Thông thường một thuật toán tham lam có thể giúp giảm O lớn của thuật toán.
    • Mã giả của một thuật toán tham lam để tìm sự khác biệt lớn nhất của bất kỳ hai số nào trong một mảng.

Thuật toán này không bao giờ cần phải so sánh tất cả các khác biệt với nhau, tiết kiệm toàn bộ một lần lặp.

  • Thuật toán tìm kiếm
  • Tìm kiếm đầu tiên
  • Một thuật toán tìm kiếm một cây (hoặc đồ thị) bằng cách tìm kiếm các mức của cây trước, bắt đầu từ gốc.

Nó tìm thấy mọi nút ở cùng một cấp độ, thường xuyên nhất là di chuyển từ trái sang phải.

  • Trong khi làm điều này, nó theo dõi các nút trẻ em của các nút ở cấp độ hiện tại.
    • Khi kiểm tra xong một cấp độ, nó di chuyển sang hầu hết các nút bên trái ở cấp độ tiếp theo.
    • Hầu hết các nút dưới cùng bên phải được đánh giá cuối cùng (nút sâu nhất và là quyền xa nhất của cấp độ của nó).

Tối ưu cho việc tìm kiếm một cây rộng hơn nó là sâu.

  • Sử dụng hàng đợi để lưu trữ thông tin về cây trong khi nó đi qua một cái cây.
  • Bởi vì nó sử dụng hàng đợi, nó rất chuyên sâu về bộ nhớ so với tìm kiếm đầu tiên về độ sâu.
  • Hàng đợi sử dụng nhiều bộ nhớ hơn vì nó cần lưu trữ con trỏ
  • Độ phức tạp về thời gian

Tìm kiếm: Tìm kiếm đầu tiên: O (V + E)

E là số cạnh

Sự định nghĩa

  • V là số đỉnh
    • Độ sâu tìm kiếm đầu tiên
    • Một thuật toán tìm kiếm một cây (hoặc đồ thị) bằng cách tìm kiếm độ sâu của cây trước, bắt đầu từ gốc.
      • Nó đi qua lại một cái cây cho đến khi nó không thể đi xa hơn.
      • Một khi nó đi đến phần cuối của một nhánh, nó đi qua việc thử đúng đứa con của các nút trên nhánh đó, và nếu có thể còn lại từ những đứa trẻ bên phải.
      • Khi kiểm tra xong một nhánh, nó di chuyển đến nút bên phải của gốc, sau đó cố gắng đi bên trái tất cả trẻ em cho đến khi nó chạm đáy.
    • Các nút phù hợp nhất được đánh giá cuối cùng (nút phù hợp của tất cả các tổ tiên).
  • Tối ưu cho việc tìm kiếm một cây sâu hơn nó rộng.

Những gì bạn cần biết

  • Được sử dụng để tìm giải pháp phù hợp, mặc dù không tối ưu, cho một vấn đề nhất định.
  • Thường được sử dụng trên các bộ dữ liệu trong đó chỉ có một tỷ lệ nhỏ thông tin được đánh giá đáp ứng kết quả mong muốn.

Thuật toán này không bao giờ cần phải so sánh tất cả các khác biệt với nhau, tiết kiệm toàn bộ một lần lặp.

  • Thuật toán tìm kiếm
  • Tìm kiếm đầu tiên
  • Một thuật toán tìm kiếm một cây (hoặc đồ thị) bằng cách tìm kiếm các mức của cây trước, bắt đầu từ gốc.

Nó tìm thấy mọi nút ở cùng một cấp độ, thường xuyên nhất là di chuyển từ trái sang phải.

  • Trong khi làm điều này, nó theo dõi các nút trẻ em của các nút ở cấp độ hiện tại.

Khi kiểm tra xong một cấp độ, nó di chuyển sang hầu hết các nút bên trái ở cấp độ tiếp theo.

Hầu hết các nút dưới cùng bên phải được đánh giá cuối cùng (nút sâu nhất và là quyền xa nhất của cấp độ của nó).

Sắp xếp chèn

Sự định nghĩa

  • Một thuật toán sắp xếp dựa trên so sánh.
    • Lặp lại từ trái sang phải so sánh con trỏ hiện tại với mục trước.
    • Nếu con trỏ nhỏ hơn vật phẩm ở bên trái, nó hoán đổi vị trí và con trỏ tự so sánh lại với phía bên trái cho đến khi nó được đặt ở vị trí được sắp xếp.
    • Khi thuật toán xử lý bộ dữ liệu, phía bên trái ngày càng được sắp xếp cho đến khi nó được sắp xếp hoàn toàn.
  • Thay đổi mảng tại chỗ.

Những gì bạn cần biết

  • Không hiệu quả cho các bộ dữ liệu lớn, nhưng có thể nhanh hơn các thuật toán khác cho các thuật toán nhỏ.
  • Mặc dù nó có độ phức tạp thời gian n6, nhưng trong thực tế, nó hơi ít hơn vì sơ đồ so sánh của nó chỉ yêu cầu kiểm tra vị trí nếu nó nhỏ hơn hàng xóm của nó.

Độ phức tạp về thời gian

  • Trường hợp tốt nhất: O(n)
  • Trường hợp trung bình: n6
  • Trường hợp xấu nhất: n6

Độ phức tạp không gian

  • Trường hợp xấu nhất: O(n)

Hình dung

(Nguồn: Wikipedia, Sắp xếp chèn)

Hợp nhất sắp xếp

Sự định nghĩa

  • Một thuật toán phân chia và chinh phục.
    • Phân chia toàn bộ mảng cho một nửa thành một nửa cho đến khi tập hợp con là một, trường hợp cơ sở.
    • Khi trường hợp cơ sở đạt được, kết quả được trả về và sắp xếp tăng dần từ trái sang phải.
    • Các cuộc gọi đệ quy được trả về và các loại có kích thước gấp đôi cho đến khi toàn bộ mảng được sắp xếp.

Những gì bạn cần biết

  • Không hiệu quả cho các bộ dữ liệu lớn, nhưng có thể nhanh hơn các thuật toán khác cho các thuật toán nhỏ.
  • Mặc dù nó có độ phức tạp thời gian n6, nhưng trong thực tế, nó hơi ít hơn vì sơ đồ so sánh của nó chỉ yêu cầu kiểm tra vị trí nếu nó nhỏ hơn hàng xóm của nó.

Độ phức tạp về thời gian

  • Trường hợp tốt nhất: O(n)
  • Trường hợp trung bình: n6
  • Trường hợp tốt nhất: O(n)

Độ phức tạp không gian

  • Trường hợp xấu nhất: O(n)

Hình dung

(Nguồn: Wikipedia, Sắp xếp chèn)

Hợp nhất sắp xếp

Sự định nghĩa

  • Một thuật toán phân chia và chinh phục.
    • Phân chia toàn bộ mảng cho một nửa thành một nửa cho đến khi tập hợp con là một, trường hợp cơ sở.
    • Khi trường hợp cơ sở đạt được, kết quả được trả về và sắp xếp tăng dần từ trái sang phải.
    • Các cuộc gọi đệ quy được trả về và các loại có kích thước gấp đôi cho đến khi toàn bộ mảng được sắp xếp.
  • Đây là một trong những thuật toán sắp xếp cơ bản.
  • Thay đổi mảng tại chỗ.

Những gì bạn cần biết

  • Không hiệu quả cho các bộ dữ liệu lớn, nhưng có thể nhanh hơn các thuật toán khác cho các thuật toán nhỏ.

Độ phức tạp về thời gian

  • Trường hợp xấu nhất: n6
  • Trường hợp trung bình: n6
  • Trường hợp xấu nhất: n6

Độ phức tạp không gian

  • Trường hợp xấu nhất: O(n)

Hình dung

(Nguồn: Wikipedia, Sắp xếp chèn)

Hợp nhất sắp xếp

  • Một thuật toán phân chia và chinh phục.
  • Phân chia toàn bộ mảng cho một nửa thành một nửa cho đến khi tập hợp con là một, trường hợp cơ sở.
  • Khi trường hợp cơ sở đạt được, kết quả được trả về và sắp xếp tăng dần từ trái sang phải.

Các cuộc gọi đệ quy được trả về và các loại có kích thước gấp đôi cho đến khi toàn bộ mảng được sắp xếp.

Đây là một trong những thuật toán sắp xếp cơ bản.

Làm thế nào tôi có thể vượt qua cuộc phỏng vấn kỹ thuật của mình?

Phải làm gì trong cuộc phỏng vấn kỹ thuật tại chỗ + Thử thách bảng trắng..
Đặt câu hỏi làm rõ trước khi bạn bắt đầu viết mã. ....
Nói chuyện qua mã của bạn (suy nghĩ to) để cung cấp cho người phỏng vấn một cửa sổ vào suy nghĩ của bạn. ....
Nói rõ ràng và chính xác. ....
Nếu bạn bị mắc kẹt, hãy bình tĩnh, suy nghĩ to và thử những ý tưởng mới ..

Những gì nên được bao gồm trong một cuộc phỏng vấn gian lận?

Làm thế nào để tạo ra một bảng gian lận cho một cuộc phỏng vấn..
Viết tên người phỏng vấn của bạn.....
Bao gồm một số ghi chú về công ty.....
Viết một tuyên bố ngắn gọn về bản thân.....
Chuẩn bị cho các câu hỏi phỏng vấn chung.....
Dự thảo ghi chú về kinh nghiệm chuyên môn của bạn.....
Chuẩn bị một phạm vi lương mong muốn.....
Liệt kê các câu hỏi để hỏi người phỏng vấn ..

Làm thế nào để tôi chuẩn bị cho một cuộc phỏng vấn công nghệ lớn?

Chuẩn bị cho một phần mềm hoặc phỏng vấn kỹ thuật..
Tạo bản trình bày PowerPoint về một chủ đề công nghệ ..
Viết mã theo thời gian thực và/hoặc thực hiện kiểm tra mã hóa tại chỗ ..
Cạnh tranh một vấn đề kỹ thuật trong một nhóm và trình bày với một bảng điều khiển ..
Giải quyết vấn đề công nghệ trên bảng trắng trước một nhóm ..

Có dễ dàng để bẻ khóa phỏng vấn kỹ thuật không?

Các cuộc phỏng vấn kỹ thuật không phải là một loại hạt khó để bẻ khóa ngay cả đối với những người mới, đặc biệt nếu bạn chuẩn bị đủ..