일단 씻고 나가자
23.02.14 본문
2023. 02. 14. 화요일
- 객체지향 4대 특성은?
: 캡슐화, 다형성, 추상화, 상속
- SOLID란 무엇이며 무슨 관점을 근거로 하는가?
: 객체지향 3대 특성을 이용하여 객체지향을 올바르게 설계할 수 있도록 돕는 원칙.
High Cohesion – Lose Coupling 원칙을 객체 지향의 관점에서 도입한 것이다.
( 강한 응집도, 약한 결합도.
하나의 클래스가 하나의 기능을 담당하고 있는 정도 / 클래스 간 서로 다른 책임들이 얽힌 상호 의존도)
https://limkydev.tistory.com/77
- REST, REST API, RESTful이란 무엇이며 4가지 종류는?
: REpresentational State Transfer
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것.
* HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
* HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
* 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
REST API란 REST의 원리를 따르는 API.
RESTful이란 REST를 사용하면서 REST API의 설계 규칙을 올바르게 지킨 시스템.
CRUD – Create, Read, Update, Delete
- CI/CD란?
: Continuous Integration / Continuous Delivery(Deployment)
CI/CD는 Continuous Integration/Continuous Delivery(지속적 통합/지속적 배포)를 뜻합니다. CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다. 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합됩니다. 따라서 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 이 방법으로 해결할 수 있습니다.
CI/CD의 "CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환하여 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다.
지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있습니다. 이는 개발팀과 비즈니스팀 간의 가시성 및 커뮤니케이션 부족 문제를 해결해 줍니다. 그러므로 지속적인 서비스 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 합니다.
지속적인 배포(또 다른 의미의 "CD": Continuous Deployment)란 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미합니다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결합니다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 서비스 제공의 장점을 활용합니다.
- CPU란 무엇의 약자인가? 한국말로는?
: Central Processing Unit. 중앙처리장치.
- HDD와 SSD는 무엇이며 무엇의 약자이고 차이는?
: Hard Disk Drive (자기적) / Solid State Drive (전기적) 보조기억장치의 종류
HDD는 마그네틱 판을 사용하며, SSD는 반도체(플래시 메모리)로 저장장치를 구성.
- RAM, ROM 이란 무엇이며 특징은?
: Random Access Memory / Read Only Memory
RAM은 휘발성이며 임시 파일을 저장할 때 주로 쓰고 메인메모리다.
ROM은 비휘발성이며 메인보드에 장착되어 공장에서 출고된다. BIOS가 저장돼 있다.
- SRAM, DRAM의 차이와 특징?
: 각각 Static, Dynamic RAM이며
SRAM은 전류가 흐르지 않으면 상태가 변화하지 않는 소자 플리플롭을 이용하여
가만히 냅두면 내용이 소멸, 변화하지 않지만
DRAM은 축전기를 사용하는데 축전기는 시간이 흐르면 전류가 방전되는 특성을 가지고 있어,
주기적으로 축전기들을 충전시켜주는 refresh 회로가 DRAM에 추가적으로 달려 있다.
SRAM은 속도가 빠르고 따라서 cache로 주로 쓰이며, DRAM은 많은 용량을 가지고 있다.
https://m.blog.naver.com/ycpiglet/221984934010
- 시스템 버스란 무엇이며 3가지 종류?
: 하드웨어 각 구성 요소끼리 데이터를 보낼 수 있도록 통로가 되어주는 물리적인 선
* 데이터 버스 : CPU와 IO의 연산 결과나 명령어를 전달하는 양방향 버스
* 주소 버스 : CPU가 주기억장치나 IO에 기억장치 주소를 전달하는 버스.
목적지인 주소만을 담아 보내기 때문에 단방향 버스.
* 제어 버스 : 앞선 두 버스를 제어하며 데이터와 주소를 버스에 실리게 하는 양방향 버스.
https://velog.io/@fldfls/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4-System-Bus
- 컴퓨터의 주기억장치와의 소통 방법 3단계와 운영체제 크기가 미치는 영향?
: 읽기 -> 처리 -> 저장 (Read -> Process -> Write)
이 과정동안 끊임없이 주기억장치와 소통하며, 운영체제의 크기 (bit 수)만큼 CPU는 RAM으로부터 데이터를 읽어옴.
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Computer%20Architecture/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20%EA%B5%AC%EC%84%B1.md
- MAVEN, GRADLE이란? 둘의 차이는?
: 네트워크를 통해 라이브러리와 엮여 있는 라이브러리까지 연동하여 최신화시켜주는 오픈 소스 소프트웨어.
MAVEN은 xml을 바탕으로, Gradle은 JVM에서 구동되는 자바와 유사한 groovy로 작성됨.
https://okky.tistory.com/179
- src 하위 폴더에 java 말고 resources에는 어떤 종류의 파일이 들어가는가?
: 자바 코드를 제외한 html이나 설정이나 등등의 모든 파일들.
- gitignore, build.gradle(repositories, dependencies) 에 대한 설명?
: gitignore은 git에 대한 정보를 저장해놓은 곳.
repositories는 라이브러리를 사용하는 곳.
dependencies는 사용하는 라이브러리의 버전과 정보.
- localhost의 포트 번호는?
: 8080. localhost:8080
- switch문을 삼항연산자로 대체하는 방법? (ex. A->1, B->2, C->3)
: switch(target) a->1 b->2 c->3 의 내용이라면
answer = target==a ? 1 : target==b ? 2 : target==c ? 3 : null;