Share
Sign In
TIL 웹개발
TIL 웹개발 - CS면접 대비 정리글
서경태
👍
모의 CS면접을 하루 앞두고 기억나는대로 정리를 해보려한다.
컴퓨터 구조
컴퓨터는 네 가지 장치로 이뤄진다.
1.
CPU
컴퓨터의 뇌에 해당하며 연산을 담당한다.
2.
주기억장치 = RAM , 메모리
보조기억장치에 저장된 프로그램을 실행시키면 주기억장치에 올라와 사용한다. 전원이 꺼지면 주기억장치에 담긴 메모리도 없어진다.
3.
보조기억장치
HDD, SSD 등 컴퓨터가 꺼져도 유지되는 장치. 평소 보조기억장치에 저장되었다가 프로그램이 실행되면 주기억장치에서 작동한다.
4.
입출력장치
마우스, 키보드, 모니터 등 컴퓨터에 입력 혹은 출력을 할 수 있는 것들을 말한다.
프로세스: 작업이 이루어지는 것을 말한다.
프로세스의 순서
신규, 준비, 실행, 대기, 종료 로 이루어진다.
프로그램을 불러오면 신규에서 준비단계로 넘어온다.
메모리의 할당을 마치면 준비에서 실행 단계로 넘어가 실행된다.
실행 중 입력이 필요하면 대기단계로 넘어간다.
입력을 마치면 다시 준비 단계로 넘어가고 실행단계에서 출력한다.
종료를 하면 실행에서 종료 단계로 넘어간다.
프로세스 구조
코드 영역
프로그램의 실행 코드가 저장되는 영역
컴파일된 기계어 코드거 이 영역에 위치한다.
읽기 전용이며, 실행 파일의 명령어가 로드된다.
데이터 영역
전역 변수와 정적 변수가 저장되는 영역
프로그램이 실행되는 동안 데이터가 유지된다.
초기화된 데이터와 초기화되지 않은 데이터 영역으로 나뉜다.
힙 영역
동적 메모리 할당을 위해 사용되는 공간
프로그램 실행 중에 필요에 따라 동적으로 메모리를 할당하고 해체한다.
스택 영역
함수 호출과 관련된 로컬 변수, 반환 주소, 함수 매개변수 등이 저장되는 영역
함수 호출시 할당되고 함수가 종료되면 해제된다.
LIFO 구조로 관리
스레드
작업 단위를 말한다.
http
Hypertext transper protocol로 클라이언트와 서버간 통신하기 위한 규약
패킷
네트워크를 통해 전송되는 데이터의 단
서버
클라이언트 요청에 응답하여 서비스를 제공하는 컴퓨터 시스템.
서버는 웹 페이지 제공, 데이터베이스 관리, 파일 저장 등의 역할을 수행할 수 있다.
형상관리 : 소프트웨어의 버전 및 변경사항을 추적, 관리하는 작업
git : 형상관리 프로그램 중 하나
Subscribe to 'kyugntae-ai'
Welcome to 'kyugntae-ai'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'kyugntae-ai'!
Subscribe
👍
Other posts in 'TIL 웹개발'See all
서경태
TIL 웹개발 - Django form 정리
우선 form은 클라이언트가 데이터를 조회하거나 전송할 때 사용하는 태그(tag)다. 게시글을 작성하는 form을 작성하면 아래 코드와 같다. 제목과 내용을 작성해 form형태로 서버에 전달해 처리한다. 이 form 형태를 쉽게 처리하는 기능을 django에서 제공하는데 Django model form이다. 데이터베이스 모델에 대응하는 폼을 자동으로 생성해주는 기능으로 위 코드처럼 별도로 폼을 정의하지 않아도 된다. 그리고 데이터베이스 기준에 따라 (텍스트, 숫자 등) 형식을 맞추지 않을 경우 자동으로 경고 메시지를 보내주기도 한다. Django model form 모델과 폼의 자동 연결 ModelForm을 사용하면, Django 모델에 정의된 필드를 기반으로 자동으로 폼 필드가 생성된다. 예를 들어, 모델에서 Charfield, DateField 등이 있다면, 해당 필드에 맞는 html 폼 필드가 생성된다. 간편한 데이터 처리 모델 폼은 데이터의 유효성을 검사하고, 유효하다면 데이터베이스에 쉽게 저장할 수 있다. form.save() 메소드를 사용하면 폼데이터를 모델 인스턴스로 변환하고 저장할 수 있다. 유효성 검사 모델 폼은 모델에서 정의된 필드의 유효성 검사(예: 최대 길이, 필수 입력 여부)를 자동으로 처리한다. 추가적인 커스텀 유효성 검살르 쉽게 정의할 수 있다. 모델 폼 정의하는 방법 Article 데이터베이스 / models.py 현재 title과 content라는 데이터 베이스가 있는 경우,
서경태
TIL 웹개발 - Django 시작하기
배운대로 써보는 djano 시작하기 기본적인 세팅부터 앱을 등록하는 방법까지 정리해본다. 아래 코드들은 모두 터미널에서 진행된다. 디렉토리를 잘 확인하고 진행해야한다. 가상 환경을 만들어준다. 가상 환경을 만들어주는 이유는 여러 프로젝트를 진행하는 경우 각 프로젝트의 버전을 유지하기 위해서다. A프로젝트에서 쟝고 3.2를 쓰고 B프로젝트에서 쟝고 4.2를 쓴다면 가상환경만 바꿔주면 문제 없이 작동한다.(고 한다. 안해봄.) Django를 설치한다. 이때 버전은 4.2를 설치하는데 이유는 LTS이기 때문인다. Django 4.2는 LTS(Long Term Support)다. LTS는 긴 보증 기간을 뜻하는데 안정성을 위해 보통 LTS 버전을 많이 사용한다. requirements.txt를 생성한다. requirements.txt에는 설치한 라이브러리의 이름과 버전이 적혀있다. 다른 사람이 이 프로젝트를 이어서 진행하거나 수정하는 경우 어떤 라이브러리와 버전이 설치되어있는지 확인할 수 있고 이 문서를 통해 바로 설치도 가능하다. Django 프로젝트 생성하기 "name" 부분에는 따옴표없이 프로젝트의 이름을 넣어준다. 그럼 바로 지정한 이름의 폴더가 생성되고 그 안에 django의 구조가 자동으로 만들어진다. 앱 생성 및 등록 프로젝트 폴더 안에 "app name"으로 폴더가 생성된다. 이제 settings.py를 찾아 그 안에 생성한 앱 이름을 넣어주면 기본세팅이 끝난다. 프로젝트 폴더 안에 같은 이름의 폴더가 하나 더 있다. 그 안에 setting.py가 있다. settings.py 안에 둘러보다보면 INSTALLED APPS = [] 가 있다. 이미 여러 가지가 채워져있는데 그 밑에 생서한 앱 이름을 추가하면된다.
서경태
TIL 웹개발 - CS 모의 면접 정리
우선 CS 면접의 경험을 정리해보면, 왜 CS를 공부해야하는지 이제서야 알게 된 느낌이었다. 단순히 개념과 설명을 반복해서 표현하는게 아니라 각 개념들 간 관계를 알고 차이점까지 설명할 줄 알아야 실무에서도 적용할 수 있다. 주로 두 가지 개념에 대해 묻는다. 이렇게 두 가지를 물어보는 이유는 차이점이 존재하기 때문에 그 특징을 잘 설명하는 것이 중요하다. 배열, 연결리스트 자료구조에서 배열과 연결리스트는 모두 데이터를 저장하고 관리하는데 사용된다. 배열 연속적인 메모리 공간에 정하는 데이터 구조 고정 크기를 가지며 한번 선언되면 크기를 변경할 수 없다. → 이는 단점으로도 작용하는데 배열의 크기를 동적으로 변경할 수 없다. 인덱스를 사용해 데이터에 접근이 빠르다. → O(1)의 시간복잡도를 가진다. 삽입 및 삭제의 비효율성 → 배열 중간에 삽입하거나 삭제할 경우 나머지 요소들을 이동시켜야하므로 O(n)이 걸린다. 연결리스트 각 요소가 노드로 구성되고, 각 노드는 데이터와 다음 노드를 가리키는 포인터를 표함되는 데이터 구조 동적 크기로 필요에 따라 노드를 추가하거나 제거하여 크기를 동적으로 변경할 수 있다. → 각 노드는 효율적인 삽입/삭제 리스트의 중간에 요소를 삽입하거나 삭제하는데 O(1) 시간이 소요된다. → 반면 특정 위치를 찾는데 O(n)의 시간이 걸려 접근이 느리다. 비연속적 저장으로 메모리 활용이 유연하다. 프로세스와 스레드 프로세스 실행중인 프로그램의 인스턴스를 의미하며, 프로그램이 메모리에서 실행되는 상태를 말한다. 각 프로세스는 독립된 메모리 공간을 가지며, 다른 프로세스와 메모리 공간을 공유하지 않는다. 실행에 필요한 자원(파일, 메모리, CPU 등) 을 소유한다. 운영체제는 프로세스를 생성, 스케쥴링, 종료등의 작업을 관리한다.