[#111][면접] IT 신입 개발자 기술 면접 대비 정리

[면접] IT 신입 개발자 기술 면접 대비 정리 


 JAVA&안드로이드 관련 

-안드로이드 P
 : 오레오의 다음 버전, 20183분기에 공개될 새로운 안드로이드 버전.
 1) 와이파이 RTT : 와이파이 Accss Point까지 거리를 측정, 3개 이상의 AP와 거리를 파악해 1-2cm 오차로 장치의 위치 계산 가능 => 건물 내 길 안내, 음성으로 가까운 조명을 켜는 서비스
 2) 디스플레이 컷 아웃 : 아이폰x같은 노치 디자인을 적용한 스마트폰에서 상태표시줄 높이 관리 가능.
 => 이용자의 몰입을 방해하지 않도록 전체화면으로 콘텐츠 표시할 수 있게
 3) 스마트 리플라이 : 그룹대화, 개별대화 식별할 수 있게 함 + 메시지 내용 분석하여 답장 내용 추천
 4) 통화 중 녹음기능 감지 시 상대방에게 알림
 5) 듀얼카메라에 특화 된 기능


가비지 컬렉션이란?
 : 정리되지 않은 메모리유효하지 않은 메모리 주소인 가비지를 정리해주는 프로그램

벡터와 어레이리스트의 차이는?
 : (벡터동기식한 스레드가 벡터 작업중이면 다른 스레드가 벡터 보유할 수 없음.
 (어레이리스트비동기식여러 스레드가 어레이리스트에서 동시에 작업할 수 있음.

- String과 StringBuffer의 차이
 : (String) 불변문자를 수정하려면 지우고 다시 생성(new) -> 문자열 연산이 많으면 성능 떨어짐
(StringBuffer)는 가변한번 만들고 필요할 때 크기를 변경하여 문자를 변경. append()처럼.
(StringBuilder) 동기화 지원x, 멀티쓰레드 환경에부적합. => 싱글쓰레드에서 stringBuffer 보다 좋음

- JAVA 씨리얼라이제이션
 : (직렬화객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환 => 나중에 재구성 할 수 있게
(Google GSON) 자바 객체를 JSON으로 변환 또는 반대 작업을 수행하는 자바 라이브러리

-java의 메모리영역
 : 메소드 영역 스택 영역 힙 영역
 (메소드바이트 코드와 전역변수, static변수
 (스택매개변수지역변수 / 사용이 끝나면 바로 소멸됨컴파일 시 메모리 할당
 () new로 생성된 객체 호출이 끝나도 사라지지 않으며 프로그램 실행 시 동적으로 할당

- 오버로딩과 오버라이딩의 차이
 : (오버로딩)
메소드의 이름은 하나이고, 매개변수를 다르게 함으로써 메소드를 여러 개 만드는 것.
 (오버라이딩
자바에서 부모클래스로부터 상속받은 메소드를 재정의 하는 것. 오버라이딩 된 메소드는 부모클래스의 메소드보다 우선되어 자식 객체에서 호출 시 오버라이딩 된 메소드가 호출됨.
원래 메소드와 동일한 리턴타입, 메소드이름, 매개변수 리스트를 가져아함.

- 추상클래스와 인터페이스 차이
 : (추상 클래스) 클래스 내 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우.
그 추상클래스를 상속받아서 기능을 이용하고 확장하도록 함 (extends)
(인터페이스) 모든 메소드가 추상 메소드인 경우. 여러 개 implements가 가능하므로 다중 상속 구현 가능
함수의 껍데기만 있는 뼈대의 의미, 구현하는 모든 클래스에 대해 그 함수의 구현을 강제적으로 하도록 함.

- 제네릭이란?
 : 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것. 만들어져 있는 클래스를 내가 원하는 형태로 사용할 수 있음. < > 안에 들어갈 수 있는 것은 참조자료형(클래스, 인터페이스, 배열) . 기본자료형을 사용하기 위해선 wrapper 클래스를 이용해야 함.

- 객체지향의 특징
 : (폴리모피즘) 하나의 메소드나 클래스가 다양한 방법으로 동작하는 것. ) 오버로딩과 오버라이딩
상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해 주고, 같은 클래스 내의 코드 길이를 줄여줌.
(상속) 공통적으로 필요한 성격을 가장 기본적인 클래스로 정의해두고, 상속받아 사용. 중복 최소화
(캡슐화) public, protected, private라는 접근 지정자를 통해 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하도록 함. 객체 외부에서는 내부 정보를 직접 접근하거나 조작할 수 없음, getter setter를 통해서만 접근 가능.

- 접근 지정자
 : (public) 모든 접근을 허용함.
(protected) 상속받은 클래스 또는 같은 패키지에서만 접근 가능
 (default) 기본 제한자, 자신 클래스 내부와 같은 패키지 내에서만 접근 가능
 (private) 외부에서 접근 불가능, 같은 클래스 내에서만 가능

- 값에 의한 호출, 레퍼런스에 의한 호출
 : (Call by value) 값을 복사해서 새로운 함수로 넘기는 호출 방식. 원본의 값이 변경되지 않는다.
(Call by reference) 주소 값을 인자로 전달하는 호출 방식. 원본의 값이 변경된다.

- 링크드리스트, 배열의 차이점
 : (배열) 인덱스를 가짐, 원하는 데이터를 한번에 접근하여 접근 속도가 빠름. 크기 변경 불가.
 데이터를 삽입, 삭제 후 그 위치의 다음위치부터 모든 데이터의 위치를 변경해야하는 단점.
 (연결리스트) 인덱스 대신 현재 위치의 이전/ 다음 위치를 기억. 크기가 가변적.
한번에 접근 불가, 연결되어 있는 링크를 따라가야 접근 가능하여 배열에 비해 속도가 떨어짐.
데이터 삽입/삭제는 논리적 주소만 바꿔주기 때문에 용이함.
 => 데이터 양이 많지만 삽입/삭제 없으며, 데이터 접근이 빈번할 때 (배열 추천)
데이터 양이 적고, 삽입/삭제가 빈번할 때 (링크드리스트 추천)

- ArrayList<>
 : 배열의 확장판. 배열의 크기를 임의적으로 변화시킬 수 있음, list에 들어갈 데이터 타입 설정 가능
(add, remove, isEmpty, size, get, indexOf 등의 메소드가 있음)

- hash?
 : 내부적으로 배열을 사용(HashTable)하여 데이터를 저장, 검색 속도가 빠름.
 데이터 삽입/삭제시 기존 데이터를 밀어내거나 채우지 않고, 데이터와 연관된 고유한 숫자를 생성해 이를 인덱스로 사용.

- equalsHashCode?
 : (equals) 동일한 내용을 가진 객체인지를 비교
(hashcode) 동일한 객체인지 구별하기 위해 고유한 정수 값으로 출력

- 스택과 큐의 차이
: (stack) Last in First out / 함수를 호출 할 때, 현재 함수에서 사용되는 값을 스택에 넣고, 작업이 끝나면 함수를 리턴하고 스택에 넣었던 값을 꺼내는 방식으로 동작
 (Queue) First in First out / 프로세스 처리, CPU 관리, 프린터 큐 등에 사용


- Java와 JavaScript의 차이는?
 : (Java) 객체지향 프로그래밍 언어로 시스템 개발안드로이드용 어플리케이션 개발에 사용
 (JavaScript) 사용자와 웹사이트가 상호작용하는데 도움을 주는 스크립트 언어사용자가 어떠한 액션을 취했을 때 다른 페이지 열지 않고 변화된 결과를 즉각적으로 보여줌페이지의 동적 제어.
 => node.js를 통해 서버상에서도 javascript 사용할 수 있게 됨컴파일 필요없고 바로 실행
 Node.js는 http서버 라이브러리를 포함하고있어서 웹서버에서 아파치 등 별도 소프트웨어 없이 동작

- Java 컴파일 과정
 : 컴파일러가 소스코드를 자바 바이트코드로(.class) 변환, JVM이 그 바이트코드를 기계어로 변환하여 인터프리터 방식으로 어플리케이션을 실행

- C++ 실행 과정
 1) 전처리 : #define, #include 지시자 해석.
 2) 컴파일 고급 언어 소스 프로그램 입력받아 어셈블리 파일 만듦
 3) 어셈블 어셈블리 파일을 오브젝트 파일로 만듦
 4) 링크 오브젝트 파일을 엮어 실행파일을 만들고 라이브러리 함수 연결
 5) 실행


성능을 개선하기 위해 어떤 방법을 사용?
 static 사용 인스턴스 변수에 접근할 일이 없는 경우 static메서드를 선언하여 호출하면 15~20% 개선
(모든 객체가 공유할 수 있음 메모리절약 연속적으로 그 값의 흐름을 이어갈 수 있음.
**final 과 차이 변경할 수 없음상속할 수 없음
  Static + final : 변경할 수 없는 공유정보


 디자인 패턴 

싱글톤 패턴
 : app이 시작 될 때 클래스가 최초로 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용.
 => 전역 인스턴스여서 다른 클래스 인스턴스가 데이터를 공유하기 쉬움인스턴스가 절대적으로 하나라는 것을 보증하고싶을 경우두 번째 이용시부터 객체 로딩 시간이 줄어 성능 개선.
 생성자 private. New를 이용한 객체 생성 불가능. Static method인 getInstance를 호출하여 받야아 함
=> 멀티쓰레드 환경에서 객체가 두개 이상이 되는 문제생김
 해결 1) synchronized : 동기화, volatile : 원자성 보장  / but, 성능에 안좋음
해결 2) 객체를 프로그램 시작과 동시에 초기화하는 방법.
해결 3) 별도의 static class에서 초기화를 해서 가지고있음

- MVC 패턴이란
 : 어플리케이션을 3가지 역할로 구분한 것으로 사용자가 컨트롤러를 조작하면, 컨트롤러는 모델을 통해 데이터를 가져옴. 그 정보를 바탕으로 시각적인 표현을 담당하는 뷰를 제어하여 사용자에게 전달하는 방법.
() 코드의 가독성, 확장성, 유지보수성을 늘릴 수 있고 코드의 중복을 최소화
() 설계 시간이 오래걸리고 숙련된 개발자가 필요하며, modelview의 완벽한 분리가 어렵다(의존적)

- MVP 패턴이란
: modelview의 의존성 분리
Presenter (view에서 요청한 정보를 model로부터 가공하여 view로 전달)
() viewpresenter가 강한 의존성을 가짐

- MVVM 패턴이란
 : Command 패턴 + Data Binding 패턴
ViewModel (view를 표현하기 위해 만들어진 view를 위한 model)
view입력 -> command 패턴으로 viewmodel에 명령 -> viewmodelmodel에서 데이터 가져와 가공하여 저장 -> viewviewmodeldata binding으로 인해 자동으로 갱신
() view viewmodel의 의존성을 완전히 삭제



 DB관련 

- Oracle Sequence
 : UNIQUE한 값을 생성해주는 오라클 객체, 시퀀스를 생성하면 PK와 같이 순차적으로 증가하는 컬럼을 자동으로 생성할 수 있음.
(생성) CREATE SEQUENCE 시퀀스이름
START WITH n
INCREMENT BY n …
 (수정) ALTER SEQUENCE 시퀀스이름          (START WITH은 수정 불가능)
 (삭제)DROP SEQUENCE 시퀀스 이름

- DBMS?
 : 데이터베이스 관리 시스템다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 시스템

- UML이란?
 : 프로그램 설계를 표현하기 위해 사용하는 그림으로 된 표기법.
 => 의사소통위해서한번에 이해하기 힘든 복잡한 시스템을 이해하기 위한 수단.

데드락이란?
 : 무한 교착 상태프로세스가 자원을 얻지 못해 다음처리를 하지 못함한정된 자원을 여러 곳에서 이용 시

- DB View? 가상 테이블이란?
 : 허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서부터 유도된 가상 테이블
 => 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져옴.
뷰에 나타나지 않은 데이터 보호 가능 + 편의성

- DB정규화란?
 : 중복을 최대한 줄여 데이터를 구조화 하여 불필요한 데이터를 제거하고 데이터를 논리적으로 저장함으로써이상 현상이 일어나지 않도록 하는 것입니다.

- 이상현상이란?
 : 릴레이션에서 일부 속성들의 종속으로 인해 데이터 중복이 발생 (insert, update, delete)

- DB설계시 가장 중요한 것은?
 : 무결성을 보장하는 것 => 무결성 보장 방법은?
 (애플리케이션데이터를 조작하는 프로그램 내에서 데이터 생성수정삭제 시 무결성 조건 검증
 (DB트리거트리거 이벤트 시 저장 SQL실행무결성 조건 실행
 (제약조건) DB제약조건 기능 선언하여 무결성 유지

트리거란?
 : 자동으로 실행되도록 정의된 저장 프로시저. INSERT / UPDATE/ DELETE문에 대한 응답으로 자동 호출
 => 사용 이유 업무 규칙을 보장업무 처리 자동화데이터 무결성 강화 (변경생성제거복구를 통해)


- DB 무결성이란?
 : (개체테이블에있는 모든 행들이 유일한 식별자를 가질 것을 요구같은 값X
 (참조외래키 값은 NULL이거나 참조테이블의 PK값이여함
 (영역한 컬럼에 대해 NULL허용 여부와 자료형규칙으로 타당한 데이터 값을 지정


- DATA WAREHOUSE?
 : 사용자 의사결정에 도움을 주기 위해 DB에 축적된 데이터를 공통의 형식으로 변환하여 관리하는 DB

오라클과 MySQL의 차이는? (Oracle >>>>> MySQL)
Oracle
MySQL
분산DB 지원
X
저장 지점 지원
X
DB내 프로그램 허용
X
엔터프라이즈 배포에 적합
중소규모
 : (Oracle)
대규모 트랜잭션로드를 처리하고 성능을 최적화하기위해 여러 서버에 대용량 DB분산
절차적 언어를 통해 DB내 내장된 프로그램의 작성을 지원함. (독립실행특정 이벤트 의해 트리거)
 (MySQL)
단일 DB로 제한되어있어매일 수백만번 액세스하는 대용량 DB에는 부적합
DB를 이전상태로 복원하는데 도움이되는 저장점이 없음 (COMMIT, ROLLBACK만 존재)

- JDBC / ODBC 차이
 : (Java Database Connectivity) java에서 DB에 접근하여 (작업데이터를 조회/삽입/수정/삭제 가능
 => 연결해주는 응용프로그램 인터페이스인 JAVA API.
 DBMS 종류에 따라 그에 맞는 jdbc를 설치해야함.
(Open Database Connectivity) 응용프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스. MS사에서 만들어진 것, DB2/Excel/Text 등 여러 종류의 데이터에 접근할 수 있다.




 기타 지식 

- QR코드란?
 : Quick Response의 약자
작은 공간에 기존 바코드보다 훨씬 많은 데이터를 담을 수 있음
오류 정정 기능이 있어, 일부가 손상되어도 복원이 가능 하다
360도 어느 방향에서나 읽을 수 있다. (3가지의 네모를 통해서)
연결 기능을 지원한다. (여러 QR코드에 나뉘어 저장된 정보를 다른 데이터로 연결 가능)

- 닷넷과 자바의 차이는?
 : (닷넷) ms에서 개발한 windows/mac os프로그램 개발 및 실행 환경
 (자바) 웹 어플리케이션 개발을 위한 플랫폼.

- 모바일 웹과 모바일 앱의 차이는?
 : (모바일 웹) HTML기반 웹 브라우저로 동작
                  () 플랫폼에 상관없이 모든 모바일 기기에서 빠르게 접근, 이용 가능
                        (URL, QR CODE, NFC)
                       하나의 웹사이트로 수많은 종류의 모바일 기기 유저가 경험 가능
 (모바일 앱) 디바이스에 설치 후 사용
                 () 네트워크 연결 없이도 동작할 수 있도록 개발 가능
                       특정 타겟에 맞춤 컨텐츠 제공 가능

- SISM의 차이는?
 : (System Integration) 새로운 시스템 구축을 위해 일정기간 프로젝트를 진행
  새로운 IT개발 기술이나 다양한 개발 경험으로 다양한 분야를 접하며 빠르게 성장할 것
(System Management) 그렇게 구축된 시스템을 오픈 이후에 사용하며 개선사항/ 오류사항에 대한 유지보수
 개발된 시스템을 분석, 필요한 기능을 추가하거나 수정하면서 업무지식에 대한 전문가로 성장

- SW개발론에 대해서?
 : (폭포수) 순차적인 소프트웨어 개발 프로세스
 => 요구사항 분석 / 설계 / 구현 / 테스트 / 유지보수
 (애자일) 프로젝트의 방향을 지속적으로 검토, 버그를 고치고 필요한 것을 바꾸며 다시 개발을 진행할 수 있도록 변화에 대처하면서 위험요소를 최소화.
 (V모델) 폭포수 모델의 확장된 형태, 테스트 단계를 추가. 각 개발 단계 검증에 초점하여 오류 줄임
 (프로토타입모델) 요구사항 분석 / 프로토타입 설계 / 프로토타입 개발 / 사용자 평가 / 구현
 (나선형모델) 계획 및 초기 요구 분석/ 1차 위험분석 / 1차 프로토타입 개발 / 1차 사용자 평가 / 처음으로

- 인터넷과 인트라넷의 차이는?
 : (인터넷) 외부와 광범위하게 연결되어있는 여러 개의 네트워크를 묶은 개념
 (인트라넷) 조직이나 단체 내부에서 사용되는 네트워크.
 (엑스트라넷) 인트라넷과 유사하지만 특정 조직의 인트라넷을 사용이 허가된 사람 이외에도 고객, 협력업체 등에서 사용할 수 있도록

- 방화벽이란 무엇인가?
 : 트래픽을 모니터링해 허용하거나 차단하는 툴

- 프레임워크란?
 : 개발할 때 설계 기본이 되는 뼈대나 구조, 환경

- XML이란?
 : 확장할 수 있는 표시 언어. 태그를 사용자 임의로 만들 수 있음. 텍스트 기반의 간결한 데이터형.
 Html이 가지는 태그의 한계를 극복. 웹에서 데이터 및 구조화된 문서를 위한 보편적 표준

- 블루투스란
 : 휴대폰이나 그 주변장치를 연결하는 무선 통신 기술. 연결 케이블 없이 전파를 사용하여 데이터를 주고받기 위한 규격.

- 리눅스와 유닉스의 차이는?
 : (리눅스) 유닉스의 장점을 포함한 유닉스와 거의 닮은 운영체제.
 (유닉스) 서버용 운영체제.암호화 능력이 좋고 안정성과 메모리 관리 능력이 좋음.

- TCP/UDP 차이는? (TCP/IP 4계층 응용, 전송, 인터넷, 네트워크인터페이스 중 전송계층)
 : (TCP) 연결형 프로토콜로 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해 세션을 수립함. 3 way handshake로 연결을 설정, 4 way handshake로 해제. 높은 신뢰성. UDP보다 속도가 느림. 1:1 통신
 (UDP) 비연결형 프로토콜로 데이터를 빨리 전달 하는 것을 목적으로함. 신뢰성이 낮지만 TCP보다 빠름. 실시간서비스(스트리밍)처럼 연속성이 중요한 서비스에 사용. 1:1 & 1:& : 다 통신

- IPv6?
 : IPv4 (32비트) 주소가 모자라 대안으로 제안된 인터넷 프로토콜 => 128비트

- 임베디드 시스템, 임베디드 SW?
 : 제어가 필요한 시스템 내에 존재하는 시스템, sw이다. 특정목적의 컴퓨터 시스템이며, 전체 장치의 일부분으로 구성,

- VPNNAT의 차이는?, VPN의 구성요소는?
 : (VPN) Virtual Private Network, 인터넷 네트워크를 이용해 특정 집단만 사용할 수 있는 작은 네트워크 구축. 인터넷 회선을 암호화된 규격을 통해 개인 전용 선 처럼 사용
 (NAT) Network Address Translation, 네트워크 주소 변환
사설 ip주소를 공인 ip주소로 바꿔주는데 사용함.

- 스레드와 프로세스의 차이는?
 : (스레드) 프로세스가 할당 받은 자원을 이용하는 실행 단위, 프로세스 하나가 생성되면 하나의 메인스레드 생성됨. 추가하지 않는 한 모든 코드는 메인스레드에서 실행됨.
 (프로세스) 운영체제로부터 자원을 할당 받는 작업의 단위, 컴퓨터에서 실행중인 프로그램

- ERP?
 : 기업 자원 관리(Enterprise Resource Planning) 기업 전체의 인적물적 자원을 효과적이며 통합적으로 관리하며 경영의 효율화와 기업 경쟁력을 강화하는 솔루션입니다생산판매인사회계 등 기업의 전반적인 업무 프로세스를 하나의 체계로 구축하며 정보를 공유하고 신속한 업무처리를 도와주는 시스템.

- Git, Github
 : (Git) 여러 대의 컴퓨터
 (Github) 여러 대의 컴퓨터가 소통할 수 잇는 서버

- “RESTful 하다의 정확한 의미
 : Representational State Transfer의 약자, REST를 지킨 서비스 디자인
 REST 구성 (자원 = URI, 명령= HTTP Method , 표현 = Representations)

- 빅오, 오메가, 세타
 (빅오) 최악의 경우, (오메가) 최선의 경우, (세타) 최소와 최악의 중간인 평균복잡도

댓글

댓글 쓰기

가장 많이 본 글