Process와 Thread의 차이
- 프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다. 스레드는 할당받은 자원을 이용하는 실행의 단위이고, 프로세스 내에 여러개 생길 수 있다. 애플리케이션 하나가 프로세스이고, 그 안에서의 분기 처리가 스레드가 되는 셈이다.
비동기 프로그래밍 왜 해야 하는가?
JavaScript는 싱글 스레드 언어이기 때문에 한 번에 한 가지 작업밖에 수행하지 못한다. 그래서 자바스크립트로 코드를 구동하면 무언가 순차적으로 일어나게 된다. 이러한 특성으로 싱글 스레드 언어는 치명적인 단점을 갖게 된다. 무거운 작업을 수행 중일 때 그 뒤의 어떤 작업도 진행되지 않게 되고, 이는 화면 로딩, 통신 연결 등의 비효율을 높이고, 사용성 또한 떨어뜨린다. 이러한 문제들을 해결하기 위해 비동기 프로그래밍이 필요하다. 비동기적으로 코드를 실행하면 더 유동적으로, 더 효율적으로 많은 일을 할 수 있다.
- 동기적 일처리 방식 : 순차적으로 일을 스스로 끝내 나가는 방식
- 비동기적 일처리 방식 : 해야 할 일을 위임하고 기다리는 방식 (동시다발적으로 업무를 수행하고 완료되는 대로 loading되는 방식)
Call by value, Call by reference
- Call by value(값에 의한 호출)는 인자로 받은 값을 복사하여 처리한다.
- Call by referemce(참조에 의한 호출)는 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 준다.
기본형과 객체가 있는데 기본형은 call by value이고 객체는 call by reference이다. 하지만 call by reference에서 해당 객체의 주소 값을 직접 넘기는 게 아닌 객체를 보는 또 다른 주소값을 만들어서 넘긴다는 점을 주의해야 한다. (swap함수 설명 참고)
HTML div, span 태그 차이
- div 태그는 줄 바꿈이 되지만, span 태그는 옆으로 붙는다.
- 영역을 지정할 때 div 태그는 사각형 박스로 구역을 정하지만 span 태그는 문장 단위로 지정한다.
CSS position 속성
- static : 요소를 문서의 흐름에 맞추어 배치, 기본값이며 요소를 나열한 순서대로 배치
- relative : static이었을 때 위치를 기준으로 상대적 위치를 지정
- absolute : 원하는 위치를 지정하여 배치, left, right, top, bottom 속성 값을 이용
- fixed : 지정한 위치에 고정하여 배치, 브라우저 창(왼쪽 위 꼭짓점)이 기준
- sticky : 위치에 따라서 동작 방식이 달라짐. 기준을 넘지 않을 때는 relative, 넘으면 fixed와 같이 동작
캡슐화
객체지향 프로그래밍에서의 중요한 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것이며, 데이터를 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한자 수식자의 기능을 제공한다. 접근지정자로 선언된 속성을 불러올 때는 get함수를 작성하여 사용할 수 있으며, set함수로 데이터를 허용된 수준에서 조작할 수 있다.
접근제한자
- public : 외부 클래스가 자유롭게 사용할 수 있도록 한다.
- protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다.
- private : 외부에서 사용될 수 없도록 한다.
위 세가지 접근 제한자가 적용되지 않으면 default 접근 제한을 가진다.
- default : 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.
상속
객체의 새로운 클래스를 정의할 때 상위 또는 부모 클래스의 데이터구조와 메소드를 그대로 이어받을 수 있는 개념으로 객체지향의 가장 큰 장점인 소프트웨어 재사용을 지원할 수 있다.
추상화
문제 해결에 필요한 부분만 취하고 불필요한 부분은 제거하여 간결하고 이해하기 쉽게 만드는 것으로 프로그램이 필요로하는 실제 데이터들을 모델링하는 기술이다.
- 추상클래스
선언되어 있지만 구현되지 않은 미완성의 추상메소드를 포함한 클래스, 꼭 필요한 기능 강제화
- 추상메소드
몸체가 없는 메소드로 상속 시 반드시 구현해야 하는 오버라이딩이 강제화 되는 메소드
- 인터페이스
추상메소드로만 구성된 추상클래스, 상위타입 역할로 다형성을 지원하여 연결하고 공동 작업을 위한 인터페이스 제공
다형성
다형성은 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력이다. 상속과 연계되어 동작하면 매우 강력한 힘을 발휘할 수 있다. 다형성과 일반화 관게는 코드를 간결하게 할 뿐 아니라 변화에도 유연하게 대처할 수 있게 한다.
본 글은 아래 링크의 내용을 참고하여 학습한 내용을 나름대로 정리한 글임을 밝힙니다.
Process와 Thread의 차이
https://brunch.co.kr/@babosamo/100
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
비동기 프로그래밍 왜 해야 하는가?
Call by value, Call by reference
https://devlog-wjdrbs96.tistory.com/44
https://codingplus.tistory.com/29
HTML div, span 태그 차이
https://mainia.tistory.com/3289
CSS position 속성
https://engkimbs.tistory.com/922
캡슐화, 접근제한자
https://terms.naver.com/entry.naver?docId=3346153&cid=40942&categoryId=32838
상속성
https://terms.naver.com/entry.naver?docId=825852&cid=42344&categoryId=42344
추상화
https://terms.naver.com/entry.naver?docId=4369071&cid=59931&categoryId=59931
https://blog.naver.com/kyy8006/222450720257
다형성
'Computer Science > 공통 요구사항' 카테고리의 다른 글
인수(Argument), 인자(Parameter)의 차이 (0) | 2022.02.23 |
---|---|
Overloading과 Overriding의 차이 (0) | 2022.01.19 |
개발자 면접 질문(자바, 스프링) (0) | 2022.01.19 |