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

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í. Bookmark the permalink. Trackbacks are closed, but you can post a comment.

5 Comments

  1. Posted 31/08/2006 at 5:46 am | Permalink

    > 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. Nguyên
    Posted 31/08/2006 at 1:31 pm | Permalink

    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. Nguyên
    Posted 31/08/2006 at 1:36 pm | Permalink

    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. ducha
    Posted 08/09/2006 at 11:30 pm | Permalink

    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. hoangtran
    Posted 05/10/2006 at 9:05 pm | Permalink

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

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>