개발자 기술 면접 준비 69

C vs JAVA

C JAVA 절차지향 언어 객체지향 언어 유지보수 어려움, 꼬이게 되면 순차적으로 수정 유지보수 용이, 해당 객체만 찾아 수정 실행/처리 속도 빠름 상대적으로 느린 속도 임베디드 또는 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에서 주로 사용 웹 사이트나 운영체제와 상관없이 실행되어야 하는 응용SW, 안드로이드 앱 등에서 사용 안정성 & 확장성이 상대적으로 낮음 안정성 & 확장성이 상대적으로 높음 메모리를 직접 조절하여 메모리 낭비가 적음 각각의 클래스로 인해 메모리 낭비가 높음

JAVA의 장단점

JAVA란? 장점 단점 - 자바 가상 머신위에서 동작하기 때문에 OS 에 독립적 - 인터프린터 언어 - 메모리를 자동으로 관리 ( 사용하지 않는 객체 자동으로 메모리에서 체크하고 반환 ) - 이식성이 높음 (JVM에서 작동하므로 운영체제의 종류에 상관없이 작동) - 멀티 스레드 구현이 쉬움 - 동적 로딩을 지원 ( 프로그램 실행시 모든 클래스 로딩 x, 필요한 시점에서 클래스 로딩해 사용) - 분산환경을 지원 ( TIC/IP 라이브러리 기본적 포함, HTTP 프로토콜 지원) - 오픈소스 라이브러리 풍부 - 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느림 - 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함 - 다른 언어에 비해 작성해야 하는..

클래스/인스턴스란?

클래스(Class)란? - 객체를 정의하는 틀 또는 설계도와 같은 의미 - 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성 - 필드란 클래스에 포함된 변수, 메소드는 어떠한 작업을 수행하기 위한 명령문의 집합 인스턴스란(Instance)란? - 클래스로부터 객체를 선언하는 과정을 클래스의 '인스턴스화' 라고함 - 객체가 메모리에 할당되어 실제 메모리를 차지하는 것 [ 참고사이트 ] 객체/클래스/인스턴스의 차이 https://ucong-9796.tistory.com/8 https://geonlee.tistory.com/11

AOP란?

AOP(Aspect-Oriented Programming)란? - 관점 지향 프로그래밍 - 객체 지향 프로그래밍에서 기능별로 class를 분리했음에도 로그, 트랜젝션 처럼 공통적으로 반복되는 중복 코드가 발생하는 단점을 해결하고나 나온 방식 - 여러 곳에서 쓰이는 공통기능을 모듈화하고, 쓰이는 곳에 필요할 때 연결함으로써 유지보수 혹은 재사용에 용이하도록 프로그래밍 하는 것

함수형 프로그래밍이란?

함수형 프로그래밍(Functional Programming) - 부수 효과가 없는 순수 함수를 이용하여 프로그램을 만드는 것 - 작은 문제를 해결하기 위한 함수를 작성해 가독성을 높이고 유지보수 용이하게 해준다. 부수효과가 없는 순수함수란? - 데이터의 값을 변경하거나 객체의 필드값을 설정하는 등의 작업을 하지 않는 함수 [ 참고사이트 ] https://mangkyu.tistory.com/111

절차지향 프로그래밍 VS 객체지향 프로그래밍

절차지향 프로그래밍 (PP) 객체지향 프로그래밍 (OOP) - 물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법 - 가장 대표적인 언어로 C언어 - 컴퓨터의 처리구조와 유사해 실행속도가 빠름 - 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움 - 실제 세걔의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법 - 가장 대표적인 언어로 JAVA - 캡슐화, 상송, 다형성 등과 같은 기법 이용가능 - 절차지향 언어보다 실행속도가 느림 C, 파스칼, 코볼 JAVA, C++, C# [참고사이트] https://mangkyu.tistory.com/88

참고 사이트

minchoi0912.tistory.com/93 신입 웹 개발자 면접 질문, 기술 면접 문제 정리 (Java, Spring, JavaScript, CS, 포트폴리오) 면접 준비하면서 정리한 질문들을 notion에 저장해놓고 면접 가면서 계속 보는 방식을 썼었는데 진짜 편했다. 기술 면접 외에도 포트폴리오 관련 내용들도 따로 정리 해 뒀는데 도움이 되었다. 다 minchoi0912.tistory.com https://mangkyu.tistory.com/88

OOP란?

[ OOP(Object Oriented Programming)란? ] - 객체지향 프로그래밍 - 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍 하는 기법 - 하나의 클래스를 바탕으로 서로 다른 상태의 인스턴스를 만들면서 다른 행동들을 하게 할 수 있음. - 사람의 사고와 가장 비슷하게 프로그래밍 가능 - 코드의 재사용(재활용성)과 유지보수에 용이 [ OOP의 특성 ] 캡슐화 - 데이터와 데이터를 처리하는 함수를 하나로 묶는 것 의미 추상화 - 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념 상속성 - 이미 정의된 상위클래스의 모든 속성과 연산을 하위클래스가 물려받는 것 다형성 - 하나의 클래스나 함수가 다양..