담비의 개발블로그

2025.04.03.면접문제풀기 본문

기타

2025.04.03.면접문제풀기

담비12 2025. 4. 21. 18:27

최근에 C, C# 으로 개발하는 회사에서 면접을 봤다.

 

비전공자에 웹개발자라 그런가 C, C#관련은 모르는 개념이 많았어서 정리해보고자 한다.

보통 JAVA 기반 언어들을 공부했었다. 

 

▶ 다음과 같은 정수형 자료형의 메모리 크기를 byte단위로 작성하세요.

1) char : 1byte

2) int : 4byte

3) unsigned int : 4byte

4) short : 2byte

 

설명

1) char는 문자 하나를 저장할때 사용한다. 컴파일러에 따라 signed char/unsigned char 둘중에 하나로 사용 된다. 보통 Linux에서 signed char가 사용되고, Windows에서 unsigned char가 사용된다. signed char는 -128부터 127까지의 범위를 가지고, unsigned char는 0~255의 범위를 가진다. 

 

2) int는 C에서 4byte(32비트)를 차지한다. 저장 가능한 범위는 약 -2,147,483,648부터 2,147,483,647까지이다.

 

3) 이것도 char랑 비슷하게 unsigned int는 음수가 없어서 범위가 0부터 4,294,967,295까지 저장이 가능하다.

 

4) short는 작은 정수를 저장할 때 사용한다. 범위는 -32,768부터 32,767까지이다.

 

 

 

▶ 다음과 같은 실수형 자료형의 메모리 크기를 bit 단위로 작성하세요.

1) float : 32bit

2) double : 64bit

 

설명

실수형은 컴퓨터에서 부동소수점 방식으로 저장된다. float은 약 7자리, double은 약 15~16자리이다. 

부동소수점 : 소수점이 고정되어 있지 않고 좌우로 움직일 수 있다는 뜻을 말한다. 정수처럼 고정된 위치에 소수점이 있는게 아니라 지수를 이용해서 소수점 위치를 이동시킨다. 컴퓨터는 이걸 IEEE 754라는 국제 표준 을 따라 저장하고 처리한다.

 

▶ 다음 빈칸에 맞는 답을 작성하세요.

1) 12를 2진수로 표현 : 1100

2) 00010110 10진수로 표현 : 22

3) 7을 8진수로 표현 : 7

4) 01101111 16진수로 표현 : 6F

 

 

 

▶ 다음 함수의 출력 결과를 작성하세요

int main()

{

       unsigned char num1 = 1;

       unsigned char num2 = 3;

       printf("%d\n", num1 & num2);

       printf("%d\n", num1 | num2);

       printf("%d\n", num1 ^ num2);

       return 0;

}

정 : 1 3 2

 

설명

num1 & num2 이 부분은 비트 AND연산이라 각 비트자리 0번째부터 7번까지 하나씩 비교해서 두 자리 다 1이면 "1"이 출력결과이고, 아니면 "0"이 출력결과이다.

num1= 1 = 00000001

num2 = 3 = 00000011

자리번호 7 6 5 4 3 2 1 0
num1 비트값 0 0 0 0 0 0 0 1
num2 비트값 0 0 0 0 0 0 1 1
& 결과 0 0 0 0 0 0 0 1

 

 

num1 | num2 는 OR 연산 (하나라도 1이면 1)

비트자리 num1 num2 결과(OR)
7 0 0 0
6 0 0 0
5 0 0 0
4 0 0 0
3 0 0 0
2 0 0 0
1 0 1 1
0 1 1 1

결과값을 보면 00000011은 2진수여서 10진수로 바꾸면 2+1 = 3 

 

 

num1 ^ num2는 XOR연산(서로 다르면1, 같으면 0)

비트자리 num1 num2 결과(XOR)
7 0 0 0
6 0 0 0
5 0 0 0
4 0 0 0
3 0 0 0
2 0 0 0
1 0 1 1
0 1 1 0

 

00000010을 10진수로 바꾸면 2

그래서 출력결과가 2

 

 

스택과 큐의 차이를 설명하세요.

스택과 큐는 모두 데이터를 순서대로 저장하고 꺼내는 구조이다. 큰 차이점은 스택은 후입선출, 큐는 선입선출이다.

항목 스택(Stack) 큐(Queue)
구조 LIFO (후입선출) FIFO (선입선출)
데이터 처리 순서 나중에 넣은 게 먼저 나온다 먼저 넣은 게 먼저 나온다
사용 예시 웹 브라우저 뒤로가기, 재귀함수 줄 서기, 프린터 작업 대기열
주요 함수 push(), pop(), peek() enqueue(), dequeue(), peek()

 

 

 다음 빈칸에 맞는 답을 작성하세요

C컴파일 과정 : 전처리기 > (             ) > 어셈블러 > (             )

정답 : 컴파일러 , 링커  

 

다음 설명에 대한 답을 작성하세요

프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다. 이때, 할당해주는 메모리 공간은 무엇입니까?
정답 :  프로세스(process)

 

설명

프로그램(program): 아직 실행되지 않은 코드 파일

프로세스(process): 프로그램이 실행되면서 메모리 공간을 갖고 실제로 동작하는 단위

 

메모리 공간을 할당하는 이유

1. 보안: 다른 프로그램에 접근하지 못하도록 하기 위해

2. 독립성: 여러 프로그램이 동시에 실행될 수 있도록

3. 자원 관리: CPU, 메모리 같은 자원을 효율적으로 관리하기 위해

 

다음 빈칸에 맞는 답을 작성하세요

void main()

{

       int idx = (               );

       int iData = 1;

       switch(idx) {

              case 0 : iData = 2;

              case 1 : iData++;

              case 2 : iData = 1;

              case 3 : iData--;

              default: break;

       }

       printf("%d", iData);

}

출력 결과 : 1

 

정답 : 0~3만 아니면 됨. 4,5,6 다 됨

 

설명

idx가 0이면 case 0 부터 시작하기때문에 출력결과가 0으로 나옴

idx가 1이면 case1에서 시작하기때문에 출력결과가 0으로 나옴

idx가 2면 case2에서 시작하기때문에 출력결과가 0으로 나옴

idx가 3면 case3 에서 시작하기때문에 출력결과가 0으로 나옴

 

 

다음 삼항연산자를 if else문으로 변경하세요.

bValue = (bStatus ? false : true);

 

정답

if (bStatus) {

        bValue = false;

        } else {

        bValue = true;

}

 

설명

bStatus가 true면 bValue = false

bStatus가 false면 bValue = true

 

 

 

 

 

다음 빈칸에 맞는 답을 작성하세요.

public class Data

{

       public int No {get; set;}

       public string Name {get; set;}

}

 

public class Write

{

       public Data data;

 

       public Write(){

              data = (          ) Data();

       }

}

*클래스 인스턴스를 생성할 때 기본(필수)으로 호출되는 연산자

 

정답 : new

 

설명

객체를 만들 때는 메모리에 인스턴스를 생성해야 함.

그걸 담당하는 게 바로 new 연산자.

Data 클래스의 실제 인스턴스를 힙 메모리에 생성하고

그 주소를 myData라는 변수에 참조로 저장한다는 의미.

'기타' 카테고리의 다른 글

[보안]SQL 인젝션  (0) 2024.10.16
윈도우11 사용자 암호 만료 기간 해제  (0) 2024.06.10