uptosiapa
764
2020-08-02 11:56:27
12
4691

신입 면접 예상 질문 정리해봤습니다.


Servlet, JSP

 

Servlet - Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것(Html in JAVA)

 

JSP(Java Server Page) - html기반에 JAVA코드를 블록화하여 삽입한 것(JAVA in Html)

 

JDBC

 

자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.

 

Get 방식

 

- 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 "이름"""이 결합된 스트링 형태로 전달

 

- 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.

 

- 길이에 제한이 있다.(=전송 데이터의 한계가 있다.)

 

- Post방식보다 상대적으로 전송 속도가 빠르다.

 

Post 방식

 

- 일정 크기 이상의 데이터를 보내야 할 때 사용한다.

 

- 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.

 

- 주소창에 전송하는 데이터의 정보가 노출되지 않아 Get방식에 비해 보안성이 높다.

 

- 속도가 Get방식보다 느리다.

 

- 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송가능.

 

GetPost 차이점

 

- Get을 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.

 

- Post방식은 전달되는 데이터가 보이지 않는다.

 

- Get방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.

 

- 웹서버에 많은 데이터를 전달하기 위해서는 Post 방식을 사용하는 것이 바람직하다.

 

 

 

SessionCookie 사용 이유

 

- 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다.

이에 따라 HTTP프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

 

Session

 

- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.

 

- Session에 관련된 데이터는 Server에 저장된다.

 

- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제 시 사라진다.

 

- Cookie에 비해 보안성이 좋다.

 

Cookie

 

- 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법

 

- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.

 

- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.

 

- CookieClient PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)

 

Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?

 

A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감

 

MVC

 

Model - 소프트웨어 응용과 그와 관련된 고급 클래스 내의 논리적 데이터 기반 구조를 표현. 이 목적 모형은 사용자 인터페이스에 관한 어떠한 정보도 가지고 있지 않다.

 

View - 사용자 인터페이스 내의 구성요소들을 표현(사용자에게 보여지는 화면)

 

Controller - ModelView를 연결하고 있는 클래스를 대표, ModelView 내의 클래스들 간 정보 교환하는데 사용.

Interface

 

- 일종의 추상 클래스

 

- 오직 추상메서드와 상수만을 멤버로 갖는다.

 

- Implements 키워드를 사용

 

- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.

 

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

 

Abstract

 

- 추상메서드를 하나 이상 가진 클래스

 

- 자신의 생성자로 객체 생성 불가능

 

- 하위 클래스를 참조하여 상위 클래스의 객체를 생성

 

- 하위 클래스를 제어하기 위해 사용

 

Interface vs Abstract

 

공통점

 

- new 연산자로 인스턴스 생성 불가능.

 

- 프로토타입만 있는 메서드를 갖는다.

 

- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.

 

차이점

 

- 사용하는 키워드가 다르다.

 

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.

 

Call by Reference, Call by Value

 

Call by Reference - 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우

 

Call by Value - 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식. 메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 미치지 않는다.

Static의 의미

 

- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미

 

- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)

 

Garbage Collection(가비지 컬렉션)

 

시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.

 

Primitive type

 

변수에 값 자체를 저장

 

정수형 byte, short, int, long

실수형 float, double

문자형 char

논리형 boolean

 

* Primitive typeWrapper Class를 통해 객체로 변형할 수 있다.

 

Reference type

 

메모리상에 객체가 있는 위치를 저장

- Class, Interface, Array

 

Wrapper Class

 

Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스

 

접근제한자

 

public - 접근 제한이 없다.(같은 프로젝트 내에 어디서든 사용가능)

 

protected - 같은 패키지 내, 다른 패키지에서 상속받아 자손클래스에서 접근 가능

 

default - 같은 패키지 내에서만 접근 가능

 

private - 같은 클래스 내에서만 접근 가능

 

 

 

Thread

 

Thread(쓰레드) - 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말함, 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다

 

Process(프로세스) - 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다.)

 

Thread 장점

 

- 빠른 프로세스 생성

- 적은 메모리 사용

- 쉬운 정보 공유

 

Thread 단점

 

- 교착상태에 빠질 수 있다.

 

* 교착상태 - 다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행 할 수 없는 어떤 특정시간을 기다리고 있는 상태.

 

ThreadProcess 차이

 

여러 분야에서 '과정' 또는 '처리'라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 '실행중인 프로그램'이라는 뜻으로 쓰인다.

 

이 프로세스 내에서 실행되는 각각의 일을 스레드라고 한다. 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것이다.

 

STACK

 

- LIFO(Last In First Out)의 후입선출 구조

- push();를 이용한 데이터 입력, pop();을 이용한 데이터 출력

- ) 시스템 스택 : 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리

- 역순 문자열 만들기, 수식의 괄호 검사, 수식의 후위 표기법 변환

 

QUEUE

 

- FIFO(First In First Out)의 선입선출 구조

- enQueue();를 이용한 데이터 입력, deQueue();를 이용한 데이터 출력

- ) 우선순위가 같은 작업 예약(인쇄 대기열), 선입선출이 필요한 대기열(티켓 카운터)

* Linear Queue(선형큐)는 메모리 재사용이 불가능 이러한 문제점을 보완하여 Circular Queue(원형 큐)가 나옴

Database에서 Index?

 

TABLE의 컬럼을 색인화(따로 파일로 저장)하여 검색시 해당 TABLE의 레코드를 full scan 하는게 아니라 색인화 되어있는 INDEX 파일을 검색하여 검색속도를 빠르게 합니다.

 

DB에서 자료를 검색하는 두 가지 방법

 

FTS(Full Table Scan) : 테이블을 처음 부터 끝까지 검색하는 방법

Index Scan : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법.

 

싱글톤 패턴

 

클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.

 

OOP?

 

데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 객체의 상호작용을 통해 프로그램이 동작하는 것을 말합니다. 캡슐화, 다형성, 상속 을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결 시켜 프로그래밍 하는 것입니다.

 

자바의 메모리 영역

 

1. 메서드 영역 : static 변수, 전역변수, 코드에서 사용되는 Class 정보 등이 올라간다.코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드데이터, 메서드 데이터 등을 분류해 저장한다.

 

2. 스택(Stack) : 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리

 

3. (Heap) : new 연산자를 통한 동작할당된 객체들이 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어 진다.

 

메모리 상수풀 영역 이란

 

힙영역(프로그래머가 관리하는 메모리 영역)에 생성되어 자바 프로세스 종료까지 계속 유지되는 메모리영역입니다.

기본적으로 JVM에서 관리하며 프로그래머가 작성한 상수에 대해 최우선적으로 찾아보고 없으면 상수풀에 추가한 이후 그 주소값을 리턴합니다. 그로 인해 메모리 절약 효가가 있습니다.

 

 

 

 

 

왜 인터페이스를 사용하는가?

 

팀작업시 개발코드 부분과 객체가 서로 통신하는 접점 역할을 지원하게 되는데, 이는 개발코드에선 객체의 내부 구조를 모르더라도 인터페이스의 메서드 명만 알고 있으면 되기 때문이다.

이를 통해 얻을 수 있는 장점은 해당 메서드를 통해 나오는 결과물을 알고 있기 때문에 다른 팀의 작업을 기다리고 있지 않아도 되며, 또한 해당 객체가 수정될 경우 개발 코드 부분은 수정을 하지 않아도 된다.

또한, 부가적으로 객체를 파일에 쓰기 위해 Serializable 인터페이스를 구현하거나, Collections.sort()를 하기 위해서 Comparable 인터페이스를 상속하는 것, Cloneable 을 구현하는 것처럼 특정 작업을 하겠다라는 "Mark"역할을 해주기도 한다.

 

직렬화란 무엇인가

 

자바에서 입출력에 사용되는 것은 스트림이라는 데이터 통로를 통해 이동했습니다.

하지만 객체는 바이트형이 아니라서 스트림을 통해 파일에 저장하거나 네트워크로 전송할 수 없습니다.

따라서 객체를 스트림을 통해 입출력하려면 바이트 배열로 변환하는 것이 필요한데, 이를 '직렬화' 라고 합니다. 반대로 스트림을 통해 받은 직렬화된 객체를 원래 모양으로 만드는 과정을 역직렬화라고 합니다.

 

serialVersionUID를 선언해야 하는 이유

 

자바가상기계 (JVM)은 직렬화와 역직렬화를 하는 시점의 클래스에 대한 버전 번호를 부여합니다.

만약 그 시점에 클래스의 정의가 바뀌어 있다면 새로운 버전 번호를 할당합니다.

그래서 직렬화할 때의 버전 번호와 역직렬화를 할 때의 버전 번호가 다르면 역직렬화가 불가능하게 될 수도 있습니다. 이런 문제를 해결하기 위해 SerialVerionUID를 사용합니다.

간단명료하게 serialVersionUID값을 저장할 때 클래스 버전이 맞는지 확인하기 위한 용도입니다.

만약 직렬화할 때 사용한 serialVersionUID의 값과 역직렬화 하기 위해 사용했던 serialVersionUID값이 다르다면 InvalidClassException이 발생할 수 있습니다.

 

리플렉션이란 무엇인가요

 

리플렉션은 컴파일러를 무시하고 런타임 상황에서 메모리에 올라간 클래스나 메서드등의 정의를 동적으로 찾아서 조작할 수 있는 일련의 행위를 말합니다. 즉 동적인 언어의 특징이라 말 할 수 있습니다. 프레임워크에서 유연성이 있는 동작을 위해 자주 사용하기도 합니다.

 

제네릭

 

클래스를 선언할 때 타입을 결정하지 않고 객체를 생성할 때 유동적인 타입으로 재사용하기 위한 것

형변환을 할 필요없고, 타입 에러가 발생할 확률이 없어진다.

자바의 클래스 멤버 변수 초기화 순서에 대해서 설명하라.

 

1. static 변수 선언부 : 클래스가 로드 될 때 변수가 제일 먼저 초기화 됨

 

2. 필드 변수 선언부 : 객체 생성 될 때 생성자 block 보다 앞서 초기화 함

 

3. 생성자 block : 객체 생성 될 때 JVM이 내부적으로 locking (thread safe 영역임)

 

초기화 시점

* 클래스변수의 초기화시점 : 클래스가 처음 로딩될 때 단 한번 초기화 된다.

* 인스턴스변수의 초기화시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.

 

컬렉션(collection) 클래스에서 제네릭을 사용하는 이유를 설명하시오.

 

컬렉션 클래스에서 제네릭을 사용하면 컴파일러는 특정 타입만 포함 될 수 있도록 컬렉션을 제한합니다.

컬렉션 클래스에 저장하는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일타임에 잡아낼 수 있도록 도와줍니다.

 

박싱과 언박싱에 대해서 설명해 보세요.

 

원시형 -> Wrapper Class로 변환 박싱

Wrapper Class -> 원시형으로 변환 언박싱

 

'데드락이란 무엇이고 이를 해결하기 위한 방법을 설명해 보시오.

 

데드락이란, 둘 이상의 쓰레드가 lock 을 획득하기 위해 기다리는데, lock 을 잡고 있는 쓰레드도 똑같이 다른 lock 을 기다리며 서로 블록 상태에 놓이는 것을 말한다.

데드락은 다수의 쓰레드가 같은 lock , 동시에, 다른 명령에 의해, 획득하려 할 때 발생할 수 있다.

- 자원 유형에 따라 우선 순위를 선정하여 자원을 선점하게 한다.

- 공유 불가능한 즉 상호 배제의 조건을 제거한다.

 

JVM 의 역할은 무엇인지 설명해 보세요.

 

JVMJava Byte CodeOS에 맞게 해석해주는 역할을 합니다.

 

 

 

 

 

SpringAOP?

 

기능별로 class를 분리했음에도 불구하고, 여전히 로그, 트랜잭션, 자원해제, 성능테스트 메서드 처럼 공통적으로 반복되는 중복코드가 여전히 발생하는 단점을 해결하고자 비지니스 로직 앞, 뒤 등 원하는 지점에 해당 공통 관심사를 수행할 수 있게 함으로서 중복 코드를 줄일 수 있는 방식입니다.

 

다형성이란?

 

서로 다른 클래스로부터 만들어진 객체지만 같은 부모의 Class 타입으로 이들을 관리할 수 있다.

 

RESTFUL이란?

 

해당 URL만 보더라도 바로 어떤 작업을 하는지를 알 수 있도록 하나의 데이터는 하나의 URL을 갖도록 작업하는 방식

 

웹 서버와 WAS (Web Application Server)

 

웹 서버는 정적인 컨텐츠( html, css, js )를 제공하는 서버입니다.

ex) Apache, Nginx

 

WASDB 조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서버입니다.

ex) Tomcat, Jeus

 

웹 서버와 WAS는 각각 독립적으로 존재할 수 있습니다.

대부분의 WAS는 정적인 컨텐츠를 제공해주고 있기 때문에, 웹 서버 없이 WAS만 존재할 수 있습니다.

그래서 WAS는 웹 서버를 포함하는 개념이라고 생각해도 될 것 같습니다.

 

웹 서버 사용 이유

1) WAS가 해야 할 일의 부담을 줄이기 위해서 입니다.

WAS 앞에 웹 서버를 둬서 웹 서버에서는 정적인 문서만 처리하도록 하고, WAS는 애플리케이션의 로직만 수행하도록 기능을 분배하여 서버의 부담을 줄이기 위한 것입니다.

 

2) WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위해서입니다.

클라이언트와 연결하는 포트가 직접 WAS에 연결이 되어 있다면 중요한 설정 파일들이 노출될 수 있기 때문에 WAS 설정 파일을 외부에 노출시키지 않도록 하기 위해서 웹 서버를 앞단에 배치시킵니다.

웹 서버와 WAS에 접근하는 포트가 다르기 때문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수도 있습니다.

 

 

Window 64, 32bit 차이

 

CPU가 처리하는 데이터의 최소 단위인 레지스터의 비트 개수

 

개발 시 중요한 요소

 

예외 처리

테스트

협업

 

애자일?

 

짧은주기의 개발단위를 반복하여 하나의 큰 프로젝트를 완성해 나가는 방식이다.

애자일의 핵심은 협력과 피드백이다.

 

DB 옵티마이저

 

옵티마이저(Optimizer)SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DBMS 내부의 핵심엔진이다.

 

변수 명명법이 중요한 이유

 

컴퓨터가 이해할수 있는 코드은 바보도 짤 수 있다. 코드는 사람이 이해할 수 있게 짜야 한다.

 

형상관리란? (깃허브)

 

소프트웨어의 변경사항을 체계적으로 관리하는 것을 말한다.

 

자바의 특징?

 

자바가상머신(JVM)을 통해 운영체제에 독립적이다.

객체지향언어이다.

가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리

멀티쓰레드를 지원한다.

 

 

 

 

 

String , StringBuffer, StringBuilder 차이

 

String : 불변. 문자를 수정하려면 지우고 다시 새로 생성 -> 문자열 연산이 많으면 성능 저하

 

StringBuffer(싱글쓰레드) : 가변. 한번 만들고 필요할 때 크기를 변경하여 문자 변경.

스트링 버퍼는 char타입의 배열로 되어 있어서 한글자 한글자를 append할 수 있다.

 

StringBuilder(멀티쓰레드)

 

링크드리스트, 배열의 차이점

 

(배열) 인덱스를 가짐, 원하는 데이터를 한번에 접근하여 접근 속도가 빠름. 크기 변경 불가.

데이터를 삽입, 삭제 후 그 위치의 다음위치부터 모든 데이터의 위치를 변경해야하는 단점.

 

(연결리스트) 인덱스 대신 현재 위치의 이전/ 다음 위치를 기억. 크기가 가변적.

한번에 접근 불가, 연결되어 있는 링크를 따라가야 접근 가능하여 배열에 비해 속도가 떨어짐.

데이터 삽입/삭제는 논리적 주소만 바꿔주기 때문에 용이함.

 

데이터 양이 많지만 삽입/삭제 없으며, 데이터 접근이 빈번할 때 (배열 추천)

데이터 양이 적고, 삽입/삭제가 빈번할 때 (링크드리스트 추천)

 

ArrayList<>

 

배열의 크기를 임의적으로 변화시킬 수 있음, list에 들어갈 데이터 타입 설정 가능

 

데이터베이스 언어

 

DCL (제어어 : Data Control Language)

데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어.

(commit, rollback, grant, revoke)

 

DML (조작어 : Data Manipulation Language)

데이터베이스 내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어.

(select, delete, update, insert)

 

DDL (정의어 : Data Definition Language)

데이터베이스 구조를 정의,수정,삭제하는 언어.

(create, alter, drop)

 

데이터베이스 정규화

 

중복을 최대한 줄여 데이터를 구조화하여 불필요한 데이터를 제거하고

데이터를 논리적으로 저장하여 이상현상이 안일어나게 하는 것

 

1정규화: 테이블에 있는 모든 속성의 도메인이 원자값(Atomic Value)만으로 되어있도록 정규화 하는 것. 모든 항목에 값이 있어야 하며, 중복 기능 열이 없어야 한다.

2정규화: 부분적 함수 종속을 제거하는 정규화

3정규화: 이행적 함수 종속을 제거하는 정규화.

 

트리거

 

자동으로 실행되도록 정의된 저장 프로시저.

INSERT / UPDATE/ DELETE문에 대한 응답으로 자동 호출

 

JOIN

 

두개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색

 

Inner Join : 매칭되는 값만 보여줌

Outer Join (left, right) : 매칭되지 않는 값도 보여줌

 

VIEW (가상 테이블)

 

변경이 불가능하고 조회만 가능한 테이블

 

트랜잭션

 

트랜잭션은 작업의 완전성 을 보장해주는 것이다.

모든 명령어의 성공 또는 실패를 한번에 처리.

흔한 예로 계좌입금에서 일어날 수 있는 오류 등을 생각해보면 좋다.

하나의 트랜잭션으로 관리하면, 영희의 계좌에 입금하는 기능이 실패했을 경우, 철수의 계좌에 돈이 다시 입금되어야 한다.

 

GROUP BY

 

컬럼 값들의 개별 그룹마다 합계를 구할수 있다.

 

 

PRIMARY KEY / UNIQUE KEY

 

PRIMARY KEY는 널을 허용하지 않지만 UNIQUE KEY는 모든 컬럼 중 유일하게 하나에 대한 NULL을 허용, 그래서 unique키는 개체하나하나를 구분할 기본키가 될 수 없다.

 

AJAX (asynchronous JavaScript and XML)

 

Ajax를 사용하면 웹 애플리케이션은 기존 페이지의 화면 및 동작을 방해하지 않으면서 백그라운드에서 비동기적으로 서버로 데이터를 보내고 서버에서 데이터를 받아올 수 있습니다.

Ajax는 프리젠테이션 레이어에서 데이터 교환 레이어를 분리함으로써, 웹페이지 및 확장 웹 애플리케이션이 전체 페이지를 다시 로드 할 필요 없이 동적으로 컨텐츠를 변경할 수 있도록 합니다.

 

TCP/UDP 차이

 

(TCP) 연결형 프로토콜로 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해 세션을 수립함.

3 way handshake로 연결을 설정, 4 way handshake로 해제.

높은 신뢰성. UDP보다 속도가 느림. 1:1 통신

 

(UDP) 비연결형 프로토콜로 데이터를 빨리 전달 하는 것을 목적으로함.

신뢰성이 낮지만 TCP보다 빠름.

실시간서비스(스트리밍)처럼 연속성이 중요한 서비스에 사용.

1:1 & 1:& : 다 통신

 

IPv6?

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

Sorting Algorithm에서 stable 하다는 것은 무엇을 의미하나요.

 

동일한 Element가 있을 때 정렬 전의 순서와 정렬 후의 순서가 동일함을 보장하는 것이 Stable이다.

 

Sorting Algorithm이 가짓수가 많은데 그 이유가 무엇일 것 같나요.

 

sorting algorithm마다 expected되는 속도가 다르다.

속도가 아닌 Space Comlexity가 고려대상이 될 수 있다.

Merge sort같은 경우 insertion sortselection sort에 비해 추가 메모리 공간을 사용하기 때문

Stable한지 안한지에 따라 사용되어야 할 sorting algorithm이 다를 수 있다.

 

HeapStack의 차이점은 무엇인가요.

 

Heap은 메모리 주소가 낮은 영역부터 채워지고 Stack은 메모리 주소가 높은 영역부터 채워진다.

 

Heap : 동적 할당을 할 경우 Heap 영역에 할당됨

Stack : 함수를 호출할 때 함수내부의 지역변수를 저장하거나 함수를 호출한 caller의 환경정보를 저장함.

 

결론적으로 물리적으론 같은 메모리 공간을 공유하지만 쓰임새가 다르고 서로의 영역을 누가 침범하느냐에 따라 Stack overflow, Heap overflow가 일어난다.

 

HTTPS

 

HTTP Secure의 약자이며 HTTPS를 사용하여 전송되는 데이터는 SSL를 통해 보호된다.

 

객체 지향 프로그래밍이란 무엇인가

 

객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는 것이다. 하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다.

 

OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보 할 수 있다.

 

 

 

 

 

자기계발, 열정

 

"왜 개발자가 되려고 하는가?" (또는 다른 분야로 바꾼 이유)

 

"어떤 개발자가 되고 싶은가?'

 

"개발을 기본적으로 좋아하는 지?"

-> 꾸준한 관심과 적성에 적합하다는 것을 입증할 근거 (블로그, 깃허브 등)가 있으면 좋다.

 

"성격의 장단점과 주위에서 어떻게 평가받고 있는 지 (단점을 고치려 노력한 부분도)"

 

"개발자로서의 본인의 비전은?"

 

"개발자가 되기 위해서 어떻게 공부하였는가"

 

"학습시 주로 이용하는 웹페이지나, 동영상 강좌 페이지는 어디인가"

 

"최근의 읽은 개발 관련 서적은 무엇인가"

 

"즐겨 보는 개발 관련 유튜브가 있는가"

 

"운영체제같은 컴퓨터공학(cs)에 대한 기초지식이 있는가"

 

"최근에 관심갖거나 공부 하고 싶은 개발 기술은 무엇인가"

 

"코딩에서 어떤 부분이 당신을 설레게 합니까? (일에 대한 열정)"

 

실천하고 있는 열정 프로젝트가 있습니까?” (꾸준한 자기 계발)

-> 돈을 넘어 프로젝트에 대한 균형과 열정을 보여주는 것이 중요

 

커뮤니케이션

 

동료와 협업 시 갈등이 생겼을 때 해결하는 방법은? (소통능력)

-> 일의 우선 순위가 명확하게 잡혀 있는 지 확인하고 모두가 명확하게 인지했는지 확인, 방향성을 다시 확인하고 업무를 진행한다.

-> 사전에 명확한 설계. 개발 프레임워크를 설정, 코딩 표준을 정한다.

 

 

 

협업, 포트폴리오, 프로젝트

 

진행했던 프로젝트에서 담당했던 부분, 구현했던 기술은?

-> 면접 전 디테일한 부분도 꼭 훑어보기

 

"회사 기술 스택에 맞추어 단기간 내에 언어와 프레임워크를 학습해야 할 때, 어떻게 공부하고 해결할 것인가"

 

"지금까지 했던 프로젝트 중에서 자랑할 만한 사례? "(당신이 일하는 방식과 팀의 일원이 되어 성공을 정의하는 방식)

-> 최근 프로젝트 위주로 대답, 가치를 추가하고 다른 팀원을 도왔던 자신의 '역할'에 집중

 

"프로젝트에서 어려웠던 부분, 아쉬웠던 부분? "(객관적, 비판적 분석, 피드백을 받고 성장할 가능성) 그리고 어떻게 해결했나

 

"어떤 소스 컨트롤을 사용합니까?(백업 등)" (코딩의 나쁜 습관, 팀내에서의 경험 확인)

 

회사에 궁금한 점은 없으신가요?

 

제가 맡게 될 업무에는 어떠한 것들이 있을까요?

 

 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


이정도 준비해가면 문제 없을까요? 내일 첫면접입니다.. 보완해야될점이 있을까요?

25
42
  • 댓글 12

  • 안드개발자
    653
    2020-08-02 12:34:13

    대충보긴했지만

    프로세스와 쓰레드의 차이에서

    메모리구조의 차이,

    ContextSwitching에 대한이야기에 추가로 os관련한것도 아시면좋구,

    교착상태에 대한이야기와 피하기위한 방법들,패턴이야기도좋고

    디자인패턴도 패턴타입도 알면좋습니다ㅎㅎ

    그래고 객체지향에서 중요한 solid에대한것도 공부하시면좋을거같네요


  • ghjgre
    957
    2020-08-03 09:13:14

    저도 대략보긴했는데 GET과 POST는 글내용으로써의 정의보단 HTTP의 관점에서 말하는게 더 알맞지 않나 싶어요. 

  • mimiuu
    30
    2020-08-03 16:06:17

    감사합니다.

  • yuu2dev
    285
    2020-08-04 17:27:35
    신입 뿐만아니라 웹개발자면 알아야 하는 기초네요
  • jongho
    2
    2020-08-05 02:13:43

    훌륭하십니다. 잘 보고 갑니다~

  • freekun
    171
    2020-08-05 14:38:27

    유용하네요

  • 열정지현
    4
    2020-08-05 17:13:10

    감사합니다 정말 유용하게 잘 봤습니다!

  • jessy
    18
    2020-08-05 23:11:01
  • kkip
    96
    2020-08-06 01:36:47

    감사합니다 

  • 달려라왕바우
    72
    2020-08-06 14:29:08

    대기업가시겠네요

  • uptosiapa
    764
    2020-08-06 18:26:45
  • 횬콘
    3
    2020-08-07 16:15:28

    좋은 정보 감사합니다.

    실례가 안된다면 개인블로그에 게시해도 될까요?

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.