- Today
- Yesterday
- Total
메이쁘
[Programming] 2020.11.20. 오늘의 면접 Q&A 본문
안녕하세요.
CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다.
틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음
언젠간 면접하게 될 때 모아서 쓰려고 합니다.
(실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!)
이번 글은 Programming 카테고리 입니다.
-- 질문 목록
Q1. Call By Value / Call By Reference 에 대해 말해보세요.
Q2. Big Endian / Little Endian 에 대해 말해보세요.
Q3 JAVA에서 Primitive Type(기본형) / Reference Type(참조형) 에 대해 말해보세요.
Q1. Call By Value & Call By Reference에 대해 말해보세요.
A. Call By Value는 값에 의한 호출로, 보통 함수 호출 시 Stack Area에 메모리가 생성되는데, 함수 호출할 때 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. 보통, 함수의 파라미터를 얘기하는데요.
함수 내에서 파라미터를 활용하면서 파라미터의 값을 아무리 변경시켜도 실제 외부에 존재하는 그 값은 변경되지 않습니다. 그 이유는 함수를 호출하면서 파라미터로 값을 넘겨줄 때 원래 데이터 값을 복사해서 넘겨줍니다.
보통 Java에서 이러한 특징을 가지고 있으며, 파라미터를 넘겨줄 때 마다 메모리 공간을 할당해야해서 메모리 공간을 더욱 소모합니다.
반면, Call By Reference는 참조에 의한 호출로, 보통 함수 호출 시 변수의 참조값을 함수 파라미터로 전달합니다. 이는 C/C++만 참조 호출이 가능한데, 그 이유는 1) 변수의 주소값 자체를 가져올 방법이 없고, 2) 참조 자료형을 넘길 시 해당 객체의 주소값을 복사하여 이를 가지고 사용하기 때문입니다.
자바에서는 원본 객체의 프로퍼티까지는 접근이 가능하지만, 원본 객체 자체를 변경시킬 수 없습니다.
Q2. 빅 엔디안(Big Endian) / 리틀 엔디안(Little Endian) 에 대해 말해보세요.
A. 우선, 엔디안(Endian) 이란 메모리와 같은 1차원 공간에 값을 저장하는 방식을 뜻합니다. 이러한 엔디안은 크게 Big Endian, Little Endian이 있는데요. Big Endian은 말 그대로 상위 비트 -> 하위 비트 로 읽어가며 저장하는 방식 입니다. 반면, Little Endian 은 하위 비트 - 상위 비트 로 읽어가며 저장하는 방식입니다.
Big Endian 은 네트워크에서 최상위비트 -> 최하위비트 순서로 데이터 전송하는데 쓰이기도 합니다. 이러한 Big Endian은 우리처럼 쉽게 읽을 수 있어 좋습니다.
Little Endian 은 Linux, Windows에서 주로 사용되는데, 보통 자주 쓰입니다. 또한, 수학적 연산이 쉽습니다.
Q3 JAVA에서 Primitive Type(기본형) / Reference Type(참조형) 에 대해 말해보세요.
A. 자바에서 기본형 구조를 트리로 나타낸다면
기본형
- Boolean
- Numeric Type
- Integral Type
- Integer(short, int, long)
- Floating Type(float, double)
- Character Type(char)
자바에서 참조형 구조를 트리로 나타낸다면
참조형
- String, Class, Interface, Array, Enum, List 등...
입니다.
기본형의 특징으로는 먼저 반드시 사용하기 전에 선언되어야 합니다. 또, 비객체 타입이나 null이 불가능하다는 점, Stack Area에 의해 메모리가 저장된다는 점이 있습니다.
반면 참조형의 특징으로는 new로 객체를 생성해서 사용하고, Heap Area에 메모리가 저장되고, Garbage Collector가 돌면서 사용하지 않거나 사용 완료한 메모리를 해제합니다. 마지막으로 null이 가능합니다.
추가적으로, String은 참조형 타입이기 때문에 =,<,> 과 같은 부등호를 사용할 수 없고 equals(), compareTo() 을 사용해서 String 끼리 비교할 수 있습니다.
이상입니다.
감사합니다!
'면접 대비 CS지식 > SELF CS면접 Q&A' 카테고리의 다른 글
[Network] 2020.12.04. 오늘의 면접 Q&A (0) | 2020.12.04 |
---|---|
[Network - 전송] 2020.11.21. 오늘의 면접 Q&A (1) | 2020.11.21 |
[OS - Memory] 2020.11.20. 오늘의 면접 Q&A (0) | 2020.11.21 |
[OS] 2020.11.18. 오늘의 면접 Q&A (0) | 2020.11.19 |
[OS - 프로세스] 2020.11.18. 오늘의 면접 Q&A (0) | 2020.11.18 |