본문 바로가기

분류 전체보기100

객체지향 프로그래밍 / 클래스형, 함수형의 차이 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? 객체 지향 프로그래밍: 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍의 장, 단점은? 장점 코드 재사용이 용이 남이 만든 클래스를 가져와 이용 가능, 상속을 통해 확장할 수 있다. 유지보수가 쉬움 절차 지향 프로그래밍에서는 코드를 수정할때 일일이 찾아 수정해야 하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다. 대형 프로젝트에 적합 클래스 단위로 모듈화 시켜서 개발할 수 있으므로 대형 프로젝.. 2024. 4. 5.
http, https / OSI 7계층 http, https 의 차이점 HTTP(hyperText Transfer Protocol)의 약자로 웹 상에서 웹 서버 및 웹브라우저 상호간의 데이터 전송을 위한 응용계층 프로토콜을 의미한다. 과거에는 www상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용되었다. 현재에는 이미지, 비디오, 음성 등 거의 모든 형식의 데이터를 전송할 수 있다. http는 기본적으로 통신규약임. 사용자가 클라이언트, 즉 브라우저 등으로 서버에 요청을 보내면 클라이언트의 요청을 받은 서버는 특정 자원에 대한 정보를 제공하거나 작업을 처리하게 된다. http 요청 메시지와 응답 메시지는 일정한 형식을 갖추어 데이터를 통신하게 된다. 컴퓨터간 상호 이해할수있는 형식인 셈이다. http는 1. 무상태성 2. 비연결성이라는 대.. 2024. 4. 4.
JWT, 토큰인증, OAuth JWT, Refresh, Access Token에 대해서 설명해주세요. 보통 서버가 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지 방식이 있다. 토큰 기반 인증 시스템은 클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증되었다는 의미로 토큰을 부여한다. 기존의 세션기반 인증은 서버가 파일이나 데이터베이스에 세션정보를 가지고 있어야하고 이를 조회하는 과정이 필요하기 때문에 많은 오버헤드가 발생한다. 하지만 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기때문에 메모리나 스토리지 등 을 통해 세션을 관리했던 서버의 부담을 줄여준다. JWT(JSON Web Token) 인증에 필요한 정보들을 암호화시킨 JSON 토큰 JWT 기반 인증은 JWT토큰을 HTTP 헤더에 .. 2024. 4. 2.
대용량 트래픽 발생시 대응, ORM 사용시 쿼리가 복잡해진다면? 대용량 트래픽 발생 시 어떻게 대응해야 하나요? 먼저 서버는 왜 터질까? 서버 = 외부로부터 들어오는 요청을 받아 처리해주고 응답을 주는 프로그램이 돌아가는 어떤 컴퓨터 서버 또한 처리속도와 한계가 CPU, 메모리, 저장장치에 영향을 받는다는 말 웹 서버라는 프로세스가 있다면, 그 프로세스 안에는 다수의 요청을 시분할 처리하기 위한 스레드들이 있다. 스레드가 아무리 많아도 결국 task를 처리하는건 cpu이기 때문에 처리속도에는 한계가 있다. 또한 모든 task를 동시에 처리할 수 없기떄문에 결국 task를 큐에 넣어 순차적으로 처리하게 되는데, 이 큐는 메모리에 존재한다. 즉, 요청을 들어오는 족족 큐에 넣다보면 메모리 오버플로우가 날 수 있다는 것이다. 웹 서버는 결국 프로그램인데 메모리 오버플로우가.. 2024. 4. 1.
RDBMS 정규화, PK & FK RDBMS의 정규화에 대해 설명해주세요. 정규화란 RDBMS를 설계할때, 중복을 최소화하면서 데이터 구조를 짜는 프로세스 이다. 정규화를 하지않으면 *이상현상이 발생하기 때문이다. 이상현상 삽입이상 데이터를 테이블에 저장할때, 불필요한 데이터도 넣어야하는 경우 삭제이상 데이터를 테이블에서 삭제할때, 원하지 않는 데이터도 같이 삭제되는 경우 갱신이상 중복된 데이터 중에서 특정 부분만 수정되어 값이 모순을 일으키는 경우 PK, FK에 대해 설명해주세요. PK(기본키, 식별키): 테이블의 유일한 값을 가지는 필드 FK(참조키, 외래키): 다른 테이블의 PK 필드와 연결 2024. 3. 29.
HTTP 메서드 HTTP 메서드에 대해 설명해주세요. HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 말한다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 것이다. 주요 메서드 GET: 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 기타 메서드 HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환한다. OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정 TRACE: 대상 리소스.. 2024. 3. 28.
db 선택 요구사항 1. 스키마가 고정되어있나요? - 고정되어있다고 볼수있나? 2. 그렇게 빠른 속도를 요하나요? - 아님 3. 많은변화예상: 팔로우/언팔로우 기능 4. 스크래핑해온 정보들 - 작품(제목, 내용, 작가이름, 별점, 작품에 대한 리뷰, 플랫폼) => 여러곳에서 스크래핑 해오니 어디에는 이런 정보가 있을거고, 어디에는 이런 정보가 없을수도 있음(키워드?) 5. 우리는 분석적/일관성 있는 데이터 저장이 필요한가? 1. 몽고디비 대용량 데이터 처리에 유리 고성능, 고가용성 및 쉬운 확장성 제공 NoSQL, Document 지향 데이터베이스 json 과 binary json 으로 저장함 장점: 스키마리스디자인?/ 희소한 데이터소스 또는 변경되는 데이터 모델을 갖는 곳에서 유리 수평적확장에 뛰어남 단점: 안정.. 2024. 3. 27.
프로세스와 쓰레드 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요. 프로그램: 어떤 작업을 위해 실행할 수 있는 파일 프로세스 - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립개체) - 동적인 개념으로는 실행된 프로그램을 의미한다. - 각각의 독립된 메모리영역을 할당받음(code, data, stack, heap) - 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있다. - 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스간의 통신(IPC)을 사용해야한다. ex) 파이프, 파일, 소켓등을 이용 스레드 - 프로세스내에서 실행되는 여러 흐름의 단위 - 프로세스의 특정한 수행 경로 - 프로세스가 할당받은 자원을 이용하는 실행의 단위 -.. 2024. 3. 27.
To-DuBu: KPT 회고록 Keep 현재 만족하고 있는 부분 프로젝트 진행하다보니 완성도 있는 코드를 쓸 수 있게 되어서 좋았다 즉각적인 소통, 원활한 소통이 되어서 좋았다. 깃 사용하면서 커밋메시지 잘 날린거같고 체계적으로 깃을 사용해본거같아서 좋았습니다. 어려운 문제있을때 팀원들과 함께 해결이 가능해서 좋았다. 평소보다 복잡한 로직을 체험해볼수있어서 좋았다. Problem 불만인 부분 시간이 짧아서 불가피하게 지피티의 도움을 받았다. 좀 더 주체적으로 짤 수 있었다면 좋겠다. 사전에 계획한 기한을 엄수하지 못함. 코드 컨벤션을 설정해두지 않아 관련한 사소한 트러블이 많았음. 네스트 사용이 익숙치않아 가드나 전략 사용에 있어 어려움이 있었다. Try 해결책, 지금당장 가능한것 지피티보다 공식문서 활용하기. 더 노력한다... 더 .. 2024. 3. 25.