안녕하세요 ! 오늘은 소프트웨어 엔지니어링 분야 관련
아래의 내용들을 함께 살펴보겠습니다 ! 🌟
📍미리보기 : 프레임워크, 애자일 방법론, 인터프리터, 1급 객체, 클린코드, TDD, 아이노드(i-node) •••

1. 프레임워크와 라이브러리의 차이
☝🏻프레임워크 : 프로그램을 개발하기 위해 사용되는 틀을 제공하는 프로그램.
프로그램의 뼈대를 형성하며 일반적인 작업 대신 처리해 줌. 개발자가 핵심 로직에만 더 집중할 수 있도록 함.
개발자는 해당 프레임워크의 규칙과 구조를 따라야 함.
-✌🏻라이브러리 : 개발자가 호출하여 사용하는 코드 모음.
개발자가 필요할 때만 라이브러리의 특정 기능을 호출하여 사용하면 됨.
2. monolithic architecture (단일체 아키텍처)와 microservice architecture(마이크로서비스 아키텍처)
의 차이
🌱 monolithic architecture
단일체 아키텍처
: 프로그램을 개발할 때 사용되는 전통적인 방식.
애플리케이션의 모든 구성 요소가 하나의 단일 소프트웨어 패키지에 포함됨. 모든 것이 하나의 프로젝트 안에 들어 있음.
🌱 microservice architecture
마이크로서비스 아키텍처
: 애플리케이션을 여러 작은 독립적인 서비스로 나누는 방식.
각 서비스는 자체적으로 개발, 배포, 확장이 가능하며, 서로 통신하며 전체 애플리케이션을 형성함. 확장성이 좋다.
3. 애자일 방법론이란 ?
( Agile = 날렵한, 민첩한 )
- 소프트웨어 개발 방식 중 하나.
작업 계획을 짧은 단위로 세우고, 제품을 만들고 고쳐 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고 신속하게 대응하는 방법론.
짧고 반복적인 스프린트(주기)로 구성
- 빠르게 결함 식별 및 수정 가능
4. TDD ( Test- Driven Development ) :
테스트 주도 개발
보통은 선 개발 후 테스트인데 TDD는 선 테스트 후 개발
*** 테스트 코드를 작성한 뒤에 실제 코드를 작성한다.
: 프로그래밍 목적을 반드시 미리 정의해야만 가능.
( 디버깅 효과 )
📍
1. (개발하려는 기능에 대한 ) 실패하는 테스트 코드 작성
순차적으로 실패하는 테스트를 먼저 작성하고, 오직 테스트가 실패한 경우에만 새로운 코드 작성해야.
2. 실패하는 테스트를 통과시키기 위해 실제 코드를 작성.
3. 리팩토링: 결과의 변경 없이 코드의 구조만
재조정하는 것.
* 이 세 단계를 반복하며 실패/성공에 대한 모든 테스트 케이스들을 작성한다.
테스트 코드를 작성하면 우리가 작성한 코드들에 대해 수시로 빠르게 검증을 받을 수 있다.
5. 컴파일러와 인터프리터의 차이
컴파일러 : 프로그램 전체를 스캔하여 모두 기계어로 번역.
그 결과물의 이름이 목적파일
링킹을 통해 여러 목적 파일을 하나의 실행 파일로 결합. 파일들은 기본적으로 하드디스크에 저장. 실행하려면 하드디스크에 있는 실행파일의 일부를 DRAM으로 옮겨와야 함. 따라서 메모리 효율은 높지 않음.
전체 코드를 검사한 후 오류 메시지를 생성하므로 ,
실행 전 오류 발견 가능.
초기 스캔시간이 오래 걸리지만, 한 번 실행 파일이
만들어지고 나면 빠르다.
인터프리터 : 프로그램 실행시 한 번에 한 문장씩 번역.
단점 : 한 문장씩 번역하므로 실행 시간이 느리다.
장점 : 메모리 효율이 좋다.
프로그램을 실행해 봐야지만 오류 발견이 가능. ( 프로그램을 실행시키고 한 문장씩 번역될 때 오류를 만나게 되면 바로 프로그램을 중지하기 때문 )
6. 1급 객체란 ?
특정 조건(아래의 조건들)을 만족하는 객체
- 변수에 할당할 수 있다
- 함수의 인자로 전달할 수 있다
- 함수의 반환 값으로 사용할 수 있다
( javascript의 객체는 모두 1급 객체겠죠 ?! )
7. char type과 string type으로 나뉘어져 있는 이유
- 문자와 문자열의 구분
- 메모리 구조의 차이
( char : 메모리에서 단일한 공간 차지. string : 각 문자가 연속적으로 배열에 저장 )
- 다양한 연산의 필요성
( char : 단일 문자끼리 비교 등. string : 문자열 분할 등. )
- 프로그램 가독성 up
8. 클린코드
- 가독성이 좋은 코드.
- 복잡하거나 모호하지 않고, 모든 팀원이 이해하기 쉽도록 작성된 코드.
ex. 함수는 동사로, 클래스나 속성의 이름은 명사로.
변수의 이름은 무엇을 나타내는지 명확히 서술.
camelCase 사용
하나의 함수는 하나의 일만 하도록 함수들을 구성.
9. 리눅스 시스템의 i-node
파일은 실제 데이터와 파일의 속성으로 이루어져 있다. 여기서 파일 속성을 가리키는 값을 i-node라고 한다. 모든 파일들은 각자 고유한 1개의 아이노드를 가지고 있다. 디렉토리도 마찬가지이다. 아이노드가 가리키는 파일 속성에는 파일 크기, 아이노드 넘버, 접근 모드 등의 정보가 들어있다.
'CS 공부' 카테고리의 다른 글
[IT기술 면접]Operating System - OS 면접 질문 (1) | 2024.05.15 |
---|---|
[IT기술 면접] java 디자인 패턴 종류 (5) | 2024.03.27 |
[IT기술 면접] 네트워크 예상질문 (3) | 2024.03.14 |