Các câu hỏi phỏng vấn [17]

Ngô Quang Hưng | 29 tháng 08, 2006 | Bản để in Bản để in

Vài câu hỏi về ngôn ngữ C.

  1. Tại sao C không có nested functions?
  2. Làm thế nào để gọi một hàm trong C nếu ta có tên hàm chứa trong một string cho trước? (Ví dụ: ta biết func_name = "some_name", làm thế nào để gọi hàm some_name?)
  3. Làm thế nào để allocate arrays hay structures lớn hơn 64K?
  4. Lệnh printf("%d"); sẽ in ra cái gì, tại sao?
  5. Trong các định nghĩa sau đây, cái gì là const?
    const char* variable;
    const* char variable;
    char* const variable;
    

Chủ đề: Dành cho du học sinh & Vui - Giải Trí |

5 lời bình cho bài “Các câu hỏi phỏng vấn [17]”

  1. 1
    catusf viết:

    > 49. Tại sao C không có nested functions?
    Hãy hỏi designer của ngôn ngữ C.

    > 50. Làm thế nào để gọi một hàm trong C nếu ta có tên hàm chứa trong một string
    > cho trước? (Ví dụ: ta biết func_name = “some_name”, làm thế nào để gọi hàm
    > some_name?)
    No answer.

    > 51. Làm thế nào để allocate arrays hay structures lớn hơn 64K?
    Cái này phụ thuộc hệ thống. Trong Win32 hay mainframe, câu này trở thành ngớ ngẩn.

    > 52. Lệnh printf(”%d”); sẽ in ra cái gì, tại sao?
    Không xác định, vì không có giá trị của biến. Như vậy mỗi lần chạy chương trình sẽ có kết quả khác nhau.

    > 53. Trong các định nghĩa sau đây, cái gì là const?
    Cái này:
    char* const variable;

  2. 2
    Nguyên viết:

    49. Có 1 stack thôi, làm sao để nested function access được local variables của outer function? Automatic-type nested function để ở đâu đây.

    50. Bí. Chỉ nghĩ được tới dùng ## preprocessor nhưng mà ## đâu có evaluate variable. Cách khác thì dùng nm để list tất cả symbols trong executable rồi tìm địa chỉ của hàm từ tên ra dùng nhưng mà nếu mà executable đã bị strip thì chịu.

    51. Chắc hồi máy/compiler cũ. Bây giờ malloc ào ào mấy chục MB mà thấy bị gì :-)

    52. Theo như bài “Lỗi định dạng chuỗi” thì sẽ in ra giá trị của tiếp theo trên stack.

    53.
    const char* variable;

  3. 3
    Nguyên viết:

    sao lạ quá, 53 bỏ vô 3 hàng hiện ra chưa tới 1 hàng :)
    a. chỗ variable chỉ tới sẽ readonly
    b. thấy lạ lạ; ‘* char variable;’ đâu có ý nghĩa
    c. variable sẽ readonly

  4. 4
    ducha viết:

    50.
    C1) So sanh’ string voi*’ tung*` ten ham` roi goi. ham` tuong ung*’ :D
    C2) Dat ham` trong 1 lib, vd libfnc.so :
    void functionToCall();

    Sau do’ trong chuong trinh chinh’:
    int main() {
    void (*fptr)();
    void *handle;
    char * str = “functionToCall”;
    handle = dlopen(”./libfnc.so”,RTLD_LAZY);
    fptr = dlsym(handle,str);
    if (fptr!=NULL) (*fptr);
    }

    53) char * const variable;

  5. 5
    hoangtran viết:

    Em chỉ thú vị với câu 50: Sử dụng function pointer

Ghi lời bình của bạn: