반응형
반응형
언어 | |
[아키텍처] | |
//---------------------------------------------------------------//. | |
아키텍처란 컴퓨터 시스템의 하드웨어 구조를 말한다. | |
cpu나 기억장치, 입출력 장치등 컴퓨터를 구성하는 요소들에 전반적인 기계적 구조와 이를 설계하는 방법이다. | |
//---------------------------------------------------------------//. | |
[C와 JAVA] | |
//---------------------------------------------------------------//. | |
C와 JAVA의 가장 큰 차이는 절차지향인과 객체지향이라는 것이다. | |
객체지향과 절차지향에 대한 설명은 밑에서 따로 정리할 것이다. | |
C는 작동방식이 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향의 언어보다 빠르게 처리된다. | |
또한, 유지보수가 어렵고, 사용자가 직접 메모리를 조절하여 사용해야 한다. | |
JAVA는 JVM위에서 작동하기 때문에 운영체제에 독립적이다. | |
또한, GC으로 사용하지 않는 메모리를 자동으로 정리한다. | |
캡슐화, 다형성, 상속등 특징이 있다. | |
//---------------------------------------------------------------//. | |
[절차지향 과 객체지향] | |
//---------------------------------------------------------------//. | |
절차지향은 순차적인 처리가 중요시 되며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. | |
컴퓨터와 작업 처리 방식이 유사 하기 때문에 빠르지만, 유지보수가 어렵고, 프로그램의 실행 순서가 바뀌면 동일한 결과를 보장받기 힘들다. | |
객체지향은 실제 세계를 모델링 하여 소프트웨어를 개발하는 방법이다. 코드의 재사용성이 높고 절차지향보다 간편하다. | |
하지만 처리속도가 절차지향에 비해 느리고, 설계에 많은 시간이 들어간다. | |
객체지향에 3대 특성이 있다. | |
캡슐화 : 정보은닉의 개념이 포함되어 있고, 속성(필드)과 행위(메서드)를 하나의 클래스라는 캡슐에 묶는 것이다. | |
다형성 : 하나의 객체가 여러가지 형태를 가질수 있는 것을 의미한다. 오버로딩과 오버라이딩이 있다. | |
상속 : 상위 클래스의 특성을 하위 클래스가 물려 받는것을 말하고 하위 클래스는 필요한 속성을 확장하여 사용할 수 있다. | |
추가적으로 추상화가 있다. | |
추상화 : 추상화는 모델링이며 구첵적인 것을 상세히 하지 않고, 필요성에 의해 특성만 가지고 구성하는것을 말한다. | |
//---------------------------------------------------------------//. | |
[오버로딩 과 오버라이딩] | |
//---------------------------------------------------------------//. | |
오버로딩 : 같은 함수의 이름여러개 정의하는것, 매개변수 타입과 리턴타입등 특징이 다른 여러개의 서브프로그램을 생성하는 것을 말한다. | |
오버라이딩 : 부모 메소드에서 상속받은 메소드를 자식에서 재정의 하는것이다. | |
//---------------------------------------------------------------//. | |
[OOP] | |
//---------------------------------------------------------------//. | |
Object-Orient Programming의 약자이다. | |
즉, 객체지향형 프로그래밍을 의미하는데, 모든 데이터를 객체로 취급하여 프로그래밍을 한다. | |
순차적으로 동작하는 프로그래밍과는 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작한다. | |
//---------------------------------------------------------------//. | |
[객체 와 클래스] | |
//---------------------------------------------------------------//. | |
객체 : 구현해야할 대상으로 식별이 가능한 모든 것이 객체이다. | |
클래스 : 객체를 만들어 내기 위한 설계도 혹은 틀 | |
연관되어 있는 변수와 메소드의 집합 | |
객체를 나누는 기준? | |
객체를 분류하는 기준은 타입이며, 타입을 나누는 기준은 객체가 수행하는 행동이다. | |
인스턴스? | |
소프트웨어 세상에 구현된 구체적인 실체로 객체를 소프트웨어 상에 실체화한것이다. | |
//---------------------------------------------------------------//. | |
[자바 동작원리] | |
//---------------------------------------------------------------//. | |
자바로 작성한 코드는 .java의 확장자를 가지고 있다. 자바는 javac라는 컴파일러가 .java로 끝나는 코드를 기계어로 변환한다. | |
그러면 .java파일이 .class의 파일로 바뀌게 되고 이는 JVM을 통해 실행된다. | |
//---------------------------------------------------------------//. | |
[JVM 특징] | |
//---------------------------------------------------------------//. | |
OS에 구애받지 않고 프로그램을 실행할 수 있게 해준다. 그리고 메모리 관리 기법인 GC를 수행한다. | |
//---------------------------------------------------------------//. | |
[매개변수와 전달인자] | |
//---------------------------------------------------------------//. | |
매개변수 즉, parameter라고 한다. | |
-함수를 선언할때 사용된 변수 | |
전달인자 즉, Argument라고 한다. | |
- 함수가 호출 되었을때, 함수의 파라미터로 전달될 | |
//---------------------------------------------------------------//. | |
[라이브러리 와 프레임워크] | |
//---------------------------------------------------------------//. | |
라이브러리 : 활용 가능한 도구의 집합을 말한다. | |
개발자가 만든 클래스에서 호출하여 사용한다. | |
프레임워크 : 뼈대, 기반구조로 여러 클래스나 컴포넌트로 구성이 되어있다. | |
즉, 특정 문제를 해결하기 위한 클래스와 인터페이스의 집합 | |
차이점: 제어권(흐름)을 누가 가지고 있는지에 대한 차이가 있다. | |
라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다쓰지만, | |
프레임워크는 전체의 흐름을 스스로 가지고 있으며, 사용자는 그 안에서 코드를 짜 넣는다. | |
//---------------------------------------------------------------//. | |
[동적 프로그래밍] | |
//---------------------------------------------------------------//. | |
동적 프로그래밍 : 하나의 문제를 여러개의 작은 문제로 나누어 풀고, 결합하여 해결하는 방식이다. | |
작은 문제가 다른 작은 문제를 해결하는데 사용이 될수 있기 때문에 여러번 계산하는것이 아닌, | |
한번 계산을 하고 난 후, 재황용 하여 메모이제이션 기법으로 속도를 향상 한다. | |
메모이제이션 : 동일한 계산을 반복해야 할 때, 이전 계산값을 저장하여 동일한 반복 수행을 제거하여 | |
프로그램 실행 속도를 빠르게 하는 기술이다. | |
동적 프로그래밍의 조건 | |
1. 중복되는 부분 문제가 있어야 한다. | |
2. 최적 부분 구조 | |
//---------------------------------------------------------------//. | |
[동일성 과 동등성] | |
//---------------------------------------------------------------//. | |
동일성 : 인스턴스가 실제로 같은 인스턴스라는 것을 의미한다. (==) | |
동등서 : 서로 다르 인스턴스 지만 가지고 있느 값이 같음을 의미한다. (equals) | |
//---------------------------------------------------------------//. | |
[length와 length()와 size()] | |
//---------------------------------------------------------------//. | |
length 는 배열 | |
length() 문자열 길이 | |
size()는 컬렉션 프레임워크 길이 | |
//---------------------------------------------------------------//. | |
[클린코드] | |
//---------------------------------------------------------------//. | |
코드가 군더더기 없이 깔끔하고, 기능을 수행하는데 있어 적은 라인을 처리가 되어있는 코드. | |
또한 직접적이고, 에러처리가 잘되어 있으며 하나의 역할을 수행한다. | |
//---------------------------------------------------------------//. | |
[c언어와 c++] | |
//---------------------------------------------------------------//. | |
C언어는 절차지향이지만 C++은 객체지향 언어이다. | |
또한 C언어는 같은 이름의 함수가 존재할수 없지만, C++에서는 존재할 수 있다.(오버로딩,오버라이딩) | |
C는 변수나 함수를 초기에 작성해 줘야하지만 ,C++은 그럴 필요가 없다 | |
//---------------------------------------------------------------//. | |
[클래스와 구조체] | |
//---------------------------------------------------------------//. | |
구조체는 하나로 묶일 수있는 변수(데이터)의 집합이다. 하지만 클래스는 변수와 메서드(함수)의 집합이다. | |
//---------------------------------------------------------------//. | |
[컴파일언어와 스크립트언어] | |
//---------------------------------------------------------------//. | |
컴파일언어 : c,java,c++,c#.. | |
스크립트언어 : javascript,python.. | |
둘의 차이는 컴파일러가 있는지 없는지에 대한 차이가 있다. | |
컴파일언어는 한꺼번에 해석을 하지만, 스크립트언어는 실행될때 바로 해석이 된다. | |
//---------------------------------------------------------------//. | |
[포인터] | |
//---------------------------------------------------------------//. | |
포인터 : 메모리의 주소를 저장하는 변수 | |
쉽게 설명을 하면, 엘레베이터에서 포인터는 해당 층을 가르키는 버튼이라고 생각하면 된다. | |
포인터를 사용할때, 해당 포인터는 반드시 주소를 가르키고 있어야 한다. | |
//---------------------------------------------------------------//. | |
[call by value와 call by reference] | |
//---------------------------------------------------------------//. | |
call by value: 주어진 값을 복사하여 전달한다. 해당 함수를 빠져나가게 되면 기존 변수에 영향을 끼치지 않는다. | |
call by reference : 주소값에 있는 값을 전달한다. 그렇기 때문에 함수를 나가도 값이 변화가 생긴다. | |
//---------------------------------------------------------------//. | |
[재귀함수] | |
//---------------------------------------------------------------//. | |
재귀함수 : 함수안에서 자기 자신을 호출하는 것을 말한다. | |
소스코드가 간결해지지만, 연산 시간이 올래걸리고, 잘못 코드를 짜게 되었을때 무한 루프에 빠질수 있다. | |
//---------------------------------------------------------------//. | |
[어노테이션] | |
//---------------------------------------------------------------//. | |
사전적으로는 주석이라는 의미이지만 JAVA에서는 주석처럼 쓰여 특별한 의미나 기능을 하는 기술이다. | |
예로) @OVERRIDNG | |
//---------------------------------------------------------------//. | |
[제너릭] | |
//---------------------------------------------------------------//. | |
제너릭은 타입의 안정성 맡고있다. 컴파일을 하는 과정에서 타입체크를 해주는 기능으로 객체의 타입을 컴파일시에 | |
체크 하기 때문에 객체의 타입의 안정성을 높이고 형변환의 번거로움을 줄인다. | |
//---------------------------------------------------------------//. | |
[느슨한 결합 과 강한 결합] | |
//---------------------------------------------------------------//. | |
결합도는 의존성을 나타낸다. | |
즉 모듈이 다른 모듈에 대해 얼만큼의 정보를 알고 있는지에 대한 척도이다. | |
느슨한 결합은 모듈간 필요한 정보만 알고있다면 두 모듈은 낮은 결합도를 가진다고 한다. | |
강한 결합은 모듈간 자세한 부분까지 알고있다면 두 모듈은 강한 결합도를 가진다고 한다. | |
개발시 강한 결합은 피하고 적절한 결합도를 유지하게 해야 한다. | |
//---------------------------------------------------------------//. | |
[static] | |
//---------------------------------------------------------------//. | |
static은 메모리를 한번 할당하여 프로그램이 종료될때 해제되는 것을 의미한다. | |
모든 객체가 공유하는 메모리라는 장점이 있지만, 자주 사용하면 시스템 퍼포먼스에 악영향을 주게 된다. | |
//---------------------------------------------------------------//. |
반응형
'CS지식' 카테고리의 다른 글
[운영체제 기초] 운영체제 용어 및 면접 예상 질문 (0) | 2022.01.23 |
---|---|
[운영체제 기초] 운영체제 용어 및 면접 예상 질문 (0) | 2022.01.23 |
[신입 개발자 면접질문] 개발 면접 마지막으로 하고싶은말? (0) | 2022.01.21 |
[네트워크 지식] Network 기본 지식 및 면접 예상 질문 (0) | 2022.01.19 |
[신입 개발자 면접 질문] 신입 개발자 면접 cs 준비 및 기본 용어 지식 (0) | 2022.01.18 |