| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- SPA MPA 특징
- 서버저장방식
- spring spring boot 차이점 공통점
- SPA MPA
- c언어 정보처리기사
- 스프링부트 장점
- nosql
- C#이론
- REST API
- 스프링부트 단점
- OPC-UA
- 기술면접
- jvm구성요소
- C# @rendermode
- Redundant Array of Independent
- 스프링부트의 장단점
- Service Worker
- 정보처리기사실기 기본개념
- C# CS
- 컴퓨터과학
- Blazor Web App
- InteractiveServer
- C# Blazor
- CS
- cs기술면접
- SPA MPA 차이
- Blazor WebAssembly
- C# InteractiveServer
- 프론트엔드
- 스프링 스프링부트 차이점 공통점
- Today
- Total
담비의 개발블로그
2025.04.03.면접문제풀기 본문
최근에 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 |
