일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- mvc디자인패턴
- break
- JavaSwing
- DB
- DB 제약조건
- 빅오표기법
- o(log n)
- oracle db
- Vo
- 접근제한자
- 데이터베이스
- 오라클
- C#접근제어자
- C#접근제한자
- DEFAULT
- DATABASE
- C언어 표준 라이브러리
- DTO
- DAO
- 메이븐업데이트
- JSP
- Oracle SQL Developer
- oracle developer
- sql
- java접근제어자
- Oracle
- java
- 자바
- 자바연산자
- O(n)
Archives
성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و
기술 면접 준비 본문
*내용에 오류가 있을 수도 있음
1> 함수형 / 객체지향 차이, 개념
- 함수형 프로그래밍(Functional Programming)
- 입력값을 받아서 출력값을 반환하는 함수들의 조합을 통해 프로그램을 작성하는 패러다임
- 상태 변경이 없고 부작용이 없는 순수 함수를 중심으로 한다.
- 불변성을 강조한다.
- 객체지향 프로그래밍(Object-Oriented Programming)
- 객체들의 상호작용을 통해 프로그램을 작성하는 패러다임
- 데이터와 해당 데이터를 조작하는 메소드를 함께 묶어 사용한다.
- 캡슐화, 상속, 다형성의 개념을 활용한다.
2> CI/CD(Continuous Integration/Continuous Deployment) ?
- 지속적 통합과 지속적 배포를 의미한다.
- CI는 개발자들이 코드를 공유 레포지토리에 푸시할 때마다 자동으로 빌드 및 테스트를 수행
코드 품질을 유지하고 통합하는 프로세스를 의미 - CD는 통합된 코드를 자동으로 테스트, 패키징하여 운영환경에 배포하는 프로세스를 의미
- CI/CD는 애플리케이션의 개발과 배포 과정을 자동화하여 개발 생산성을 향상시키고 배포 주기를 단축시키는데 도움을 줍니다.
3> REST API(Representational State Transfer API)?
- 웹 서비스 간의 통신을 위한 아키텍처 스타일
- REST는 자원(Resource)를 URI로 표현하고, HTTP 메서드 (GET, POST, PUT, DELETE) 를 이용하여 자원을 표현
- REST API는 클라이언트와 서버 사이의 통신을 무상태( Stateless )로 유지하고, 각 요청에 대한 응답으로 상태 정보를 제공한다.
- 무상태 Stateless : 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다.
서버의 확장성이 높기 떄문에 대량 트래픽 발생에도 대처 수월하게 가능하나
클라이언트의 요청에 상대적으로 상태유지(Stateful) 보다 많은 데이터가 소모된
4> CRUD?
- Create, Read, Update, Delete로 데이터베이스에서 데이터를 다루는 네가지 작업을 의미한다
- Create는 데이터 생성
- Read는 데이터 조회
- Update는 데이터 수정
- Delete는 데이터 삭제
5> RDBMS / No-SQL 차이
- Relational Database Managenet System, 관계형 데이터베이스 관리 시스템
- 데이터를 테이블 형태로 저장하고 SQL을 사용하여 데이터를 조작한다.
- NoSQL 관계형 데이터베이스가 아닌 데이터모델을 사용하는 데이터베이스
- 스키마가 없는 데이터베이스, 분산 데이터베이스, 키-값 저장소등 다양한 형태의 데이터베이스를 포함
6> GET, POST 방식
- GET과 POST는 HTTP 프로토콜을 통해 서버에 데이터를 요청하는 방식
- GET : 데이터를 요청할 때 주로 사용, 데이터 조회에 사용된다.
- POST : 데이터를 서버로 제출할 때 주로 사용, 데이터를 생성 또는 수정할 때 사용된다.
7> COOKIE 와 SESSION 차이
- 쿠키(Cookie)와 세션(Session)은 웹 서버와 클라이언트 간의 상태 정보를 유지하기 위해 사용
- 쿠키
- 클라이언트의 로컬에 저장
- 보안에 취약
- 클라이언트가 서버에 요청을 보낼 때마다 함께 전송 됨
- 기본적으로 쿠키에 세션ID(세션ID는 기본적으로 해쉬값이라 위변조해도 맞출 수 없다) 보관
- 세션
- 서버 측에서 클라이언트를 식별하고 상태 정보를 유지한다.
- 서버에 저장되므로 쿠키보다 보안에 안전함
8> http란?
- HTTP(HyperText Transfer Protocol)는 인터넷에서 데이터를 주고받을 때 사용되는 프로토콜
- 사용자(클라이언트)가 웹 브라우저 주소창에 보고 싶은 페이지의 URL을 입력 즉, 클라이언트와 서버 간의 통신을 위해 설계 됨
- 클라이언트가 서버에 요청(Request)을 보내고, 서버가 클라이언트에게 응답(Response)을 보내는 형태로 동작한다.
- HTTP는 TCP/IP 기반의 프로토콜
9> http 관련 메소드는?
- GET: 서버에서 정보를 요청, 주로 데이터를 조회할 때 사용.
- POST: 서버로 정보를 제출하기 위해 사용, 주로 데이터를 생성 또는 수정할 때 사용.
- PUT: 서버에 정보를 저장하기 위해 사용, 주로 데이터를 수정할 때 사용.
- DELETE: 서버에서 정보를 삭제하기 위해 사용, 주로 데이터를 삭제할 때 사용.
- PATCH: 리소스의 부분만을 수정하기 위해 사용.
- HEAD: GET 메소드와 동일한 요청을 하지만, 실제 내용을 받지 않고 응답 헤더만을 받는다.
- OPTIONS: 대상 리소스에 대한 통신 가능한 옵션을 설명한다.
- TRACE: 클라이언트로 전송된 요청 메시지를 돌려받는다.
10> 미들웨어란?
- 미들웨어(Middleware) 서버와 애플리케이션의 중간에 위치하여 클라이언트의 요청을 처리하고 응답을 생성하는 소프트웨어
- 클라이언트의 요청이 도착하면 이를 처리하여 다음 단계로 전달하고, 서버의 응답이 생성되면 이를 가공하여 클라이언트에게 전달
- 미들웨어는 보안, 로깅, 인증, 캐싱 등 다양한 기능을 수행할 수 있으며, 웹 애플리케이션의 동작을 제어하고 개선하는 데 사용된다.
11> WEB 과 WAS차이?
- WEB(Web Server)
- 클라이언트로부터 HTTP 요청을 받아 정적인 리소스를 제공하는 서버
- 주로 HTML, CSS, 이미지 파일 등을 제공
- 대표적인 웹 서버로는 Apache가 있다.
- WAS(Web Application Server)
- 동적인 웹 애플리케이션을 실행하기 위한 환경을 제공하는 서버
- 클라이언트의 요청에 따라 동적으로 데이터를 처리하고 응답을 생성
- Java EE, .NET 등의 언어와 프레임워크로 작성된 애플리케이션을 실행
- 대표적인 WAS로는 Tomcat이 있다.
12> 트랜젝션이란?
- 트랜잭션(Transaction)은 데이터베이스에서 여러 개의 작업을 하나의 논리적 단위로 묶어서 처리하는 것
- 트랜잭션은 ACID(Atomicity, Consistency, Isolation, Durability) 원칙을 준수하여 작업의 일관성과 안정성을 보장한다.
- 트랜잭션은 다음과 같은 단위로 수행되고, 데이터베이스의 일관성과 안정성을 유지한다.
- 시작(Start): 트랜잭션을 시작합니다.
- 작업(Work): 데이터베이스 작업을 수행합니다.
- 커밋(Commit): 트랜잭션의 작업을 영구적으로 저장소에 반영합니다.
- 롤백(Rollback): 트랜잭션의 작업을 취소하고
13> DML, DDL ?
- DML(Data Manipulation Language)과 DDL(Data Definition Language)은 SQL(Structured Query Language)에서 사용하는 언어
- DML(Data Manipulation Language): 데이터 조작 언어, 데이터를 조회, 삽입, 수정, 삭제하는 데 사용. 명령어로는 SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)
- DDL(Data Definition Language): 데이터 정의 언어, 데이터베이스 구조를 정의하거나 조작하는 데 사용. 명령어로는 CREATE(생성), ALTER(변경), DROP(삭제)
DDL은 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 정의하고 관리하는 데 사용된다.
14> 암호화과정 설명
- 암호화 과정은 평문(원본 데이터)을 암호화하여 암호문(암호화된 데이터)을 생성하고, 이를 전송 및 저장하는 과정을 의미한다.
- 주요 암호화 기법으로는 대칭키 암호화(Symmetric Key Encryption)와 공개키 암호화(Public Key Encryption)
- 대칭키 암호화는 동일한 키를 사용하여 암호화와 복호화를 수행하는 기법
주로 대량의 데이터를 안전하게 전송하는 데 사용됨 - 공개키 암호화는 공개키와 개인키를 사용하여 데이터를 암호화하고, 이를 복호화하는 기법
주로 안전한 통신을 위해 사용됨
- 대칭키 암호화는 동일한 키를 사용하여 암호화와 복호화를 수행하는 기법
15> SPRING IOC, DI, AOP에 대해 설명
- SPRING IOC(Inversion of Control), DI(Dependency Injection), AOP(Aspect-Oriented Programming)는 스프링 프레임워크의 핵심 개념.
- IOC(Inversion of Control): 제어의 역전, 객체 생성과 관리를 개발자가 아닌 프레임워크가 담당하는 것을 의미.
이를 통해 의존성 관리와 모듈화가 용이해진다. - DI(Dependency Injection): 의존성 주입, 객체 간의 의존 관계를 설정 파일 또는 어노테이션을 통해 외부에서 주입하는 것을 의미
이를 통해 객체 간의 결합도를 낮추고 유연한 코드를 작성할 수 있다. - AOP(Aspect-Oriented Programming): 관점 지향 프로그래밍, 애플리케이션에서 흩어진 관심사(로깅, 보안 등)를 모듈화하여 중복을 줄이고 관리를 용이하게 하는 것을 의미.
주로 횡단 관심사(Cross-Cutting Concerns)를 처리하는 데 사용.
- IOC(Inversion of Control): 제어의 역전, 객체 생성과 관리를 개발자가 아닌 프레임워크가 담당하는 것을 의미.
16> Array, List 차이
- Array(배열)
- 고정된 크기의 동일한 타입의 요소들로 이루어진 자료구조.
- 크기가 고정되어 있으며, 연속된 메모리 공간에 저장되므로 인덱스를 통해 빠르게 접근할 수 있다.
- List(리스트)
- 크기가 가변적이며, 다양한 타입의 요소들을 저장할 수 있는 자료구조.
- 리스트는 배열과 달리 동적으로 크기가 조절되며, 요소들이 연속된 메모리 공간에 저장되지 않을 수 있다.
- Java에서 List 인터페이스를 구현한 클래스로는 ArrayList, LinkedList 등이 있다.
17> MVC 패턴이란?
- MVC(Model-View-Controller) 패턴은 소프트웨어를 구성하는 데 사용되는 디자인 패턴, 애플리케이션을 세 가지의 구성 요소로 나누어 개발한다.
- 이를 통해 모델과 뷰를 분리하여 유연한 애플리케이션 구조를 유지할 수 있다.
- Model(모델): 애플리케이션의 비즈니스 로직과 데이터를 관리하는 부분, 데이터의 상태를 관리하고 업데이트하는 역할.
- View(뷰): 사용자에게 정보를 표시하고 사용자의 입력을 받는 부분, 데이터의 시각적인 표현을 담당.
- Controller(컨트롤러): 사용자의 입력을 받아 모델을 업데이트하거나 뷰를 업데이트하는 부분, 사용자의 요청을 처리하고 그에 따른 응답을 생성.
18> interface, abstract 차이점
- interface(인터페이스)
- 추상 메소드와 상수만을 포함한 클래스와 유사한 형태의 추상화된 타입.
- 다중 상속을 지원하며, 다른 클래스에서 해당 인터페이스를 구현하여 사용할 수 있다.
- abstract(추상 클래스)
- 일부 메소드가 구현되지 않은 추상 메소드를 포함하고 있는 클래스.
- 추상 클래스는 직접 인스턴스화할 수 없으며, 상속을 통해 하위 클래스에서 완전한 구현이 이루어져야 한다.
- 추상 클래스는 인스턴스 변수와 메소드를 가질 수 있습니다.
19> 디버깅 방식은?
- 디버깅(Debugging)은 프로그램에서 발생하는 오류를 찾고 수정하는 과정
- 로그분석, 테스트, 디버거 사용, 코드 검토, 예외처리를 하면서 디버깅과정을 진행합니다.
- 로그 분석: 프로그램 실행 중에 생성되는 로그를 분석하여 오류 발생 원인을 추적하는 방법
로그에는 프로그램의 실행 상태, 오류 메시지 등이 포함되어 있어 오류를 식별하는 데 도움이 됨. - 테스트: 다양한 시나리오에 대해 프로그램을 테스트하여 오류를 재현하고 발견하는 방법.
단위 테스트, 통합 테스트, 시스템 테스트 등 다양한 종류의 테스트를 수행하여 오류를 찾을 수 있다. - 디버거 사용: 디버거(Debugger)를 사용하여 프로그램의 실행을 중지하고 변수의 값을 확인하거나 코드의 흐름을 따라가며 오류를 추적하는 방법.
디버거는 프로그램을 단계별로 실행하거나 특정 지점에서 중지시키는 등의 기능을 제공. - 코드 검토: 다른 개발자들과 함께 코드를 검토하여 오류를 발견하고 수정하는 방법.
코드 검토를 통해 다양한 시각에서 코드를 살펴보고 오류를 발견할 수 있다. - 예외 처리: 프로그램 실행 중에 발생하는 예외를 적절하게 처리하여 오류를 방지하거나 처리하는 방법입니다. 예외 처리를 통해 프로그램의 안정성을 향상시킬 수 있습니다.
- 로그 분석: 프로그램 실행 중에 생성되는 로그를 분석하여 오류 발생 원인을 추적하는 방법
20> hash 에 대해 설명
- HASH는 임의의 크기를 갖는 데이터를 고정된 크기의 값으로 매핑하는 함수
- 해시함수는 입력 데이터가 조금만 달라져도 결과값이 크게 달라지는 특성이 있따
- 보안, 데이터 검색, 암호화 등 다양한 분야에서 사용된다.
21> 서버 배포 프로세스 설명
- 서버 배포 프로세스는 애플리케이션을 개발 환경에서 운영 환경으로 이전하여 실제 사용자에게 서비스하는 과정을 의미.
- 서버 배포 프로세스는 다음과 같은 단계로 이루어진다
- 빌드(Build): 소스 코드를 컴파일하고 빌드하여 실행 가능한 애플리케이션 파일을 생성.
이 과정에서는 테스트가 완료된 코드만을 포함하고 필요한 라이브러리와 의존성을 포함. - 테스트(Test): 빌드된 애플리케이션을 테스트하여 안정성과 성능을 검증.
다양한 테스트 수준(단위 테스트, 통합 테스트, 시스템 테스트 등)을 수행하여 오류를 발견하고 수정. - 배포(Deploy): 테스트를 완료한 애플리케이션을 운영 환경으로 배포.
이 과정에서는 서버에 애플리케이션을 설치하고 설정을 구성하여 사용자가 접근할 수 있도록 준비. - 모니터링(Monitoring): 배포된 애플리케이션을 모니터링하여 실행 상태를 실시간으로 확인하고 성능을 관찰.
이를 통해 오류나 성능 저하를 신속하게 대응할 수 있습니다. - 유지보수(Maintenance): 배포된 애플리케이션을 지속적으로 관리하고 업데이트하여 사용자에게 최상의 서비스를 제공.
이 과정에서는 보안 패치, 기능 추가, 성능 향상 등을 수행.
- 빌드(Build): 소스 코드를 컴파일하고 빌드하여 실행 가능한 애플리케이션 파일을 생성.
22> 프로세스와 스레드 차이
- 프로세스(Process)와 스레드(Thread)는 컴퓨터에서 동작하는 실행 단위를 의미.
- 프로세스(Process):
운영 체제에서 실행 중인 프로그램을 의미.
각 프로세스는 독립적인 메모리 공간을 가지며, 프로그램의 실행 상태, 자원 등을 관리.
각 프로세스는 하나 이상의 스레드를 포함. - 스레드(Thread):
프로세스 내에서 실행되는 작업 단위를 의미.
하나의 프로세스는 여러 개의 스레드를 생성하여 병렬적으로 작업을 수행.
스레드는 프로세스의 자원을 공유하며, 각각 독립적인 실행 흐름을 가지고 있다.
- 프로세스(Process):
'Diary' 카테고리의 다른 글
개발자 뉴스 레터 목록 "내가 받고 있는" 뉴스 목록 > (0) | 2023.10.26 |
---|---|
[국비지원 풀스택 개발자과정] 1달 기록 (0) | 2023.10.24 |