[면접] 언어 관련 (C++ 등)

ppparkta·2022년 9월 9일
1

외우기 쉽게 대비되는 개념은 싸움 붙여봤습니다.

동기 vs 비동기

💡 동기 synchronous

시간이 얼마가 걸리든 요청 시 응답이 바로 보장되어야 함

💡 비동기 Asynchronous

요청과 응답 순서가 보장되지 않음


Vector vs Array list

vector

동기식으로 한 스레드가 벡터 작업중이면 다른 스레드는 벡터 보유하지 못함

array list

비동기식 여러 스레드에서 동시에 작업이 가능함


💡 Serialization

💡 Serialization

직렬화라는 의미
데이터를 저장할 때 데이터의 구조나 객체의 상태 등을 다른 (혹은 같은) 컴퓨터로 보낼수 있게 어떤 포맷 형태로 변환하는 과정

자바에서는 자바 객체를 json으로 변환하거나 json을 자바 객체로 변환하는 라이브러리를 뜻함


hash

데이터를 삽입 / 삭제 할 때 기존 데이터를 밀어내지 않고 데이터와 관련된 고유 번호를 생성해 인덱스로 사용하는 방식임. 처리 속도가 빠름


Call by Value vs Call by Reference

손교수님이 자바기초때 열 번은 말하셨던거 같다. 콜바이밸류 얘기만 들으면 손교수님 얼굴이 떠오른다.

값에 의한 호출 call by value

함수에 인자를 전달할 때 인자의 값만을 복사하여 전달하는 방식. 이 방식으로 전달하면 함수 내에서 어떤 처리가 있어도 원본 값은 변경되지 않음

참조에 의한 호출 call by reference

함수에 인자를 전달할 때 주소를 전달하는 방식. 이 방식으로 전달하면 함수 내에서 어떤 처리가 있을 때 원본 값이 변경됨


배열 vs 연결리스트

배열

미리 연속된 공간을 할당받고 데이터를 저장하는 방식. 인덱스를 사용하기 때문에 접근이 빠르지만 데이터를 삭제해도 공간은 남아있기 때문에 메모리 사용은 덜 효율적임

연결리스트

인덱스로 값을 찾는다는 개념보다는 노드간의 연결로 데이터를 저장하는 방식. 데이터 삭제할 때 논리 주소만 수정하면 되므로 공간 낭비가 없음. 대신 인덱스 사용하는 배열보다는 접근 속도가 느린 편


💡 C++ 실행과정

컴파일 과정이다

  • 전처리
    • #include, #define 등 매크로 전처리
  • 컴파일
    • 소스 파일을 어셈블리어로 변경
  • 어셈블
    • 어셈블리 파일을 오브젝트 파일로 변경
  • 링킹
    • 오브젝트 파일 엮어서 실행 파일 만들고 라이브러리 함수 연결

구조체 vs 클래스

난 여태까지 c-구조체 cpp-클래스 라고 이해하고 살았는데... 차이점이 있었다.

구조체

하나의 구조로 묶일 수 있는 변수들의 집합

클래스

변수에다 메소드까지 묶을 수 있다.

=> 함수포인터 이용하면 구조체도 클래스처럼 메소드 묶을 수 있긴 함


포인터

변수의 주소값을 저장한 변수

cpp에서 사용할 때는 가리키는 변수가 어떤 주소를 가리키는 상태(즉 초기화 된 상태)여야 사용 가능함

profile
겉촉속촉

0개의 댓글