본문 바로가기

기술면접

(14)
정리 (윤성우의 열혈 C프로그래밍) 1. printf : 데이터 출력 함수 printf("1 더하기 1은 %d", 2); 출력 : 1 더하기 1은 2 2. scanf : 데이터 입력 함수 int num1, num2; int result; scanf("%d %d", &num1, &num2); result = num1 + num2; printf("%d", result); num1 입력 : 9 num2 입력 : 11 출력 : 20 3. 비트연산자 : 비트 단위로 연산을 진행 메모리 공간의 효율성을 높이고 연산의 수를 줄이는 요인이 되기도 한다. 연산자 연산자의 기능 결합방향 & 비트단위로 AND연산을 한다. ex) num1 & num2; 두개의 비트가 모두 1일때 1을 반환 1 & 1 → 1 1 & 0 → 0 → | 비트단위로 OR연산을 한다...
기술면접 4 1. Malloc과 New의 차이 : Malloc은 라이브러리가 제공하는 함수이기에 C,C++ 둘다 사용가능하지만, New는 C++언어에서 제공하는 기본적인 연산자 이기에 C++에서만 사용가능합니다. Malloc 함수는 메모리 할당만 해주는 함수이기에 생성자가 자동호출 되지 않는 반면에, New 함수는 자동으로 생성자가 호출이 됩니다. 2. 오버로딩과 오버라이딩의 차이 : 오버라이딩은 부모클래스에 선언된 함수와 (이름, 리턴값, 매개변수가) 같은 함수를 자식클래스에서 재정의 하는 것이고, 오버로딩은 함수의 이름만 같고 사용목적에 따라 매개변수를 다르게 사용하는 것입니다. 3. 스마트 포인터란? : 사용이 끝난 메모리를 자동으로 해제해 주어 메모리 관리를 편하게 할 수 있도록 도와주는 포인터입니다. 4. ..
기술면접 3 1. 델리케이트란? : 하나의 클래스에 있는 모든 함수들을 원하는대로 담아 일괄적으로 사용할 수 있도록 도와주는 것입니다. 델리케이트에 담을 함수들은 해당 델리케이트의 변수와 동일해야합니다. 2. 디자인 패턴은 무엇인가? : 설계를 정형화 하여 사용하는 것으로 개발자간의 구조파악과 의사소통이 용이해지고, 재사용으로 시간을 단축할 수 있다는 장점이 있지만 정형화 함에있어 초반에는 시간과 노력이 많이 든다는 단점이 있습니다. 3. 오브젝트 풀링이란? : 짧은 시간동안 할당과 삭제가 빠르게 이루어지는 총알 오브젝트와 같은 경우는 자원소비가 많기에, 불필요한 자원소비를 줄이기 위해 한 공간에 미리 만들어두고 사용이 끝나면 삭제를 하는것이 아닌 다시 담아두어 재사용하는 것이 오브젝트 풀링입니다.
기술면접 2 1. OOP가 무엇인가? : 독립적인 각각의 객체로 프로그램이나 시스템을 구성하는 객체지향을 의미합니다. 2. 객체지향 프로그래밍의 특징에는 어떤것들이 있는가? : 대상의 공통점만 다루어 목적에만 집중할 수 있도록 하는 추상화, 객체 스스로가 자신의 역할을 수행할 수 있게 자율성을 높여주는 캡슐화, 자식클래스가 부모클래스의 속성을 부여받아 동일하게 사용할 수 있게 하는 상속성, 동일한 요청을 다양한 방법으로 응답할 수 있도록 만드는 다형성이 있습니다. 3. 상속이란? : 부모객체가 자식객체에게 자신의 특성을 물려주어 자식클래스가 부모클래스의 속성을 사용할 수 있게 해주는 것 입니다. 4. 접근 지정자란? : 상속을 할때 공개, 비공개 여부를 결정해주는 것입니다. public으로 공개, private로 비..
기술면접 1 - 2 14. 구조체와 클래스의 차이 : 구조체와 클래스는 큰 차이는 없지만, 기본적인 접근제어지시자가 클래스는 private, 구조체는 public이라는 다른점이 있습니다. (클래스 내에서 데이터를 저장하는 멤버변수는 클래스의 속성을, 데이터를 처리하는 멤버함수는 클래스의 동작을 결정합니다.) 15. 가상함수 : 파생 클래스에서 재정의 할 것으로 기대하는 멤버 함수를 의미합니다. -순수 가상함수 : 선언만 있고 정의가 없는 가상함수로서 파생 클래스에서 재정의 할 것으로 예상되는 함수에 대해 미리 호출계획을 세워두기 위해 정의합니다. -차이 : 가상함수는 인터페이스+함수의 선언+내부 구현을 자식 클래스에게 전달하기 위해 사용하고, 순수 가상함수는 인터페이스를 자식 클래스에게 전달하기 위해 사용하는 함수입니다. ..
기술면접 1 - 1 1. C/C++ 차이 C는 절차지향적 언어로 순차적인 처리가 중요시 되고 프로그램 전체가 함수화 되어 함수끼리 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 클래스로 유사한 성질의 함수와 데이트를 하나의 그룹으로 모아놓고 그것을 즉시 사용하는 것을 객체라고 하는데, C++은 객체지향적 언어로 데이터를 객체화시키고, 그 객체에 의해 프로그램이 실행되도록 만드는 기법입니다. 2. 객체지향 모든 데이터를 객체로 취급하여 처리 요구받은 객체가 자기 자신의 안에 있는 내용을 가지고 처리하는 방식으로서 다루는 수법으로, 순차적 처리가 중요시 되는 절차지향은 크고 복잡한 프로그램을 구축하기 어렵기에 이 문제점을 해결하기 위해 객체지향을 사용합니다. 3. 메모리풀에 대한 설명과 사용시 이점 메모리풀은 메모리를 미..
리스트(List), 배열(Array) - 링크드 리스트(Linked List)와 배열(Array)의 차이 Array Linked List 같은 자료형의 변수로 이루어진 구성요소가 모인 것 데이터를 보관하는 각 노드가 있고 해당 노드에는 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식 자료형[] 배열 변수명 = new 자료형[배열크기] int[] a = new int[3]; int형의 배열 본체를 생성하고 그것을 변수 a가 참조"하도록 설정 Linked list = new LinkedList (); 논리적 저장 순서와 물리적 저장 순서가 일치한다. 다음 노드의 정보를 모두 가지고 있는게 아닌, 다음에 나올 자료 위치 정보만 가지고 있다. index로 해당 원소에 접근(random access 가능) -> 찾고자 하는 원소의 인덱스 값을 ..
디자인 패턴 : 자주 사용하는 설계 형태를 정형화 하여 이를 유형별로 설계 템플릿을 만들어 둔 것. 디자인 패턴을 잘 사용하면 효율성과 재사용성을 높일 수 있으며, 설계 자료를 유형별로 분류하면 개발 기간을 둘이고 유지보수도 매우 쉬워질 수 있다. 디자인 패턴은 알고리즘처럼 프로그램 코드로 변환하여 바로 사용할 수 있는 것은 아니지만 유사한 상황에서 구조적인 문제를 해결할 수 있는 방안을 제시해준다. 1) 개발자(설계자) 간의 원활한 의사소통 : 여러 디자인 패턴의 특성을 잘 알고 있어 문제해결 시 어떤 디자인 패턴을 사용하면 좋을지 해결책을 논의할 수 있다. 2) 소프트웨어 구조 파악 용이 : 디자인 패턴의 특성을 잘 알고 있기에 어떤 디자인 패턴이 설계할 때 사용되었는지 알면 소프트웨어 전체구조를 쉽게 파악 가능..