신입개발자 기술면접 / 인성면접 질문정리
최하단에 정리 참고했던 원본 링크 기재해 두었습니다.
노란 배경색 처리한 부분은 중요 질문이라 체크해두었던 내용입니다 참고해주세요.
📚기술 면접
JDK 와 SDK에 대해 설명해주세요.
1.JDK (Java Development Kit) : 자바 프로그램 개발 도구,
자바로 소프트웨어를 개발 할수있도록 제공하는 도구모음
2.SDK (Software Development Kit) : 소프트웨어 개발 도구,
어떤 소프트웨어를 만들기 위한 도구모음
자바란?
객체 지향 프로그래밍 언어로 캡슐화, 상속, 추상화, 다형성이 잘 적용된 언어입니다.
자바의 장단점에 대해 설명
- 장점: JVM위에서 동작해서 OS(운영체제)에 독립적이고 가비지 컬렉터를 통한 자동 메모리 관리가 가능합니다.
- 단점: 비교적 속도가 느리다는 점이 있지만, 하드웨어 성능 발전으로 JVM 기능이 향상 해 속도의 격차가 많이 줄어 들었습니다.
JVM (Java Virtual Machine) 자바 가상 머신이란?
OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터입니다.
JVM의 특징
자바 바이트 코드를 운영체제(OS)에 맞게 번역해주는 역할을 합니다.
JAVA 컴파일 과정(JVM 동작 원리)에 대해 서술하세요.
1. 자바 파일을 생성하고 빌드합니다.
2. 자바 컴파일러의 자바씨 명령어를 통해 바이트코드를 생성합니다.
3. 클래스로더를 통해 JVM 메모리 내로 로드합니다.
4. 실행 엔진을 통해 운영체제에 맞는 기계어로 번역합니다.
클래스란?
객체를 만들어내기 위한 틀이자 설계도입니다.
객체란?
객체는 클래스 기반으로 생성되는 구체적 추상적 데이터 단위를 말합니다.
인스턴스란?
객체에 메모리가 할당되어 실제로 활용되는 실체입니다.
함수란?
하나의 기능을 수행하는 일련의 코드를 말합니다.
메소드란?
객체의 기능을 구현하기 위한 클래스 내부에 구현되는 함수입니다.
함수와 메소드의 차이점은?
- 함수: 어디에 속해있지 않고 단독 모듈이라 함수를 그냥 호출하여 사용 가능합니다.
- 메소드: 함수의 일종이긴 하나, 클래스 안에 속해있습니다.
생성자란?
클래스와 같은 이름의 메소드로 객체가 생성될 때 호출되는 메소드 입니다.
자바의 main메소드
자바는 어플리케이션이 실행되면 제일 먼저 메인메소드를 실행합니다.
이너클래스와 하위클래스의 차이점
이너클래스는 클래스 안에 클래스로 중첩클래스를 말합니다.
하위클래스는 자식클래스를 말합니다.
자바의 메모리 영역에 대해 설명해주세요.
1) 메소드 영역 (스태틱 영역) :
-전역변수와 static으로 선언되는 것들을 저장하고
프로그램 종료될때까지 메모리에 남아있습니다.
2) 스택 영역:
-기본형과 지역변수가 저장됩니다.
-런타임시에 메모리가 할당됩니다
3) 힙 영역:
-참조형이 저장됩니다.
-가비지 컬렉션에 의해 메모리가 관리되어집니다.
-컴파일타임시에 메모리가 할당됩니다.
런타임과 컴파일타임 차이점
런타임은 컴파일과정을 마치고 응용프로그램이 동작될때,
컴파일타임은 컴파일과정을 통해 실행가능한 프로그램이 될때를 말합니다.
스택오버플로우란?
stack영역에서 해당 프로그램이 사용할수있는 메모리 공간 이상을 사용하려고 할때 발생합니다.
static이란?
- 메모리 공간 할당 시 처음 설정된 메모리 공간이 변하지 않는 것입니다.
- 공용적인 데이터라면 static으로 선언합니다.
가비지 컬렉션이란?
- 프로그램에서 더이상 사용하지 않는 메모리를 자동으로 정리하는 것.
전역변수와 지역변수 차이점은?
- 전역변수 : 함수 바깥에 선언하여
클래스 전체에서 사용 가능한 변수입니다.
-지역변수 : 함수 속에서 선언하여
해당 함수 속에서만 사용 가능한 변수입니다.
필드에 대해 설명해주세요.
- 클래스에 포함된 변수를 의미합니다
선언된 위치에 따라 구분됩니다.
-클래스 변수 (메소드영역),
-인스턴스 변수 (힙영역),
-지역 변수 (스택영역)
자바의 클래스 멤버 변수 초기화 순서에 대해서 설명하라.
1.static변수 선언부 : 클래스가 로드될때 변수가 제일 먼저 초기화됨
2.필드 변수 선언부 : 객체 생성 될 때, 생성자 block보다 앞서 초기화 함
3.생성자 block : 객체 생성 될 때 JVM이 내부적으로 locking (thread safe영역임)
초기화 시점
*클래스변수의 초기화시점 : 클래스가 처음 로딩될때 단 한번 초기화 된다.
*인스턴스변수의 초기화시점 : 인스턴스가 생성될때마다 각 인스턴스별로 초기화가 이루어진다.
Stack과 Queue의 차이점에 대해 설명해주세요.
1. Stack :
- LIFO 마지막에 들어온 것이 먼저 나가는 구조입니다.
- 삽입 연산은 push, 삭제 연산은 pop
2. Queue :
- FIFO 먼저 들어온 것이 먼저 나가는 구조입니다.
- 삭제 연산이 수행 되는 곳은 front 삽입 연산이 수행 되는 곳은 rear
원시타입(Primitive type) 참조타입(Reference type)에 대해 설명해주세요.
1.기본형 타입
- 논리형Boolean
- 정수형 byte,short,int,long
- 실수형 float,double
- 문자형 char
- Null이 존재하지 않습니다.(사용하려면 래퍼클래스로 '박싱'하면됨.)
- 실제 값을 저장하는 공간으로 Stack에 저장됩니다.
2.참조형 타입
-기본형타입의 제외한 모든 타입
- 래퍼(wrapper) 클래스가 포함됩니다.
- Null이 존재합니다.
- 주소 값을 저장하는 공간으로 Heap에 저장됩니다.
자바에서 제공하는 원시 타입(Primitive Type)의 각 바이트는 어떻게 되는지 서술하세요.
1. 정수형에는 byte(1), int(2),short(4), long(8)이 있고
2. 실수형에는 float(4), double(8)이 있고
3. 문자형에는 char(2) 논리형에는 boolean(1)이 있습니다.
박싱과 언박싱 차이
박싱 : 원시형에서 래퍼클래스로 변환
언박싱 : 래퍼클래스에서 원시형으로 변환
객체 지향 프로그래밍(OPP)란?
현실에서 부품을 조립해 제품을 만들듯 소프트웨어 개발시 객체들을 조립해 만드는 기법으로,
사람의 사고와 가장 비슷하게 프로그래밍 가능하게 해줍니다.
- 구성요소 : 클래스, 객체, 메시지
OPP의 장점과 단점
- 장점 : 코드의 재사용성이 높아지고, 생산성 향상과, 유지보수가 쉽습니다.
- 단점 : 처리 시간이 비교적 오래 걸립니다. 설계시 많은 고민과 시간을 투자해야합니다.
OPP의 4가지 특징은?
1. 캡슐화
- 실제 구현 부분을 외부에 드러나지 않도록 은닉 하는 것
2. 상속
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
3. 추상화
- 객체들의 공통 속성과 행위를 추출하는 것이다.
4. 다형성
-하나의 클래스나 메소드가 있을 때 이것을 다양한 방법으로 동작하는 것으로
- 대표적으로 오버로딩과 오버라이딩이 있습니다.
OPP의 5가지 원칙은 (SOLID)?
S (SRP : Single Responsibility Principle)
한 클래스는 하나의 책임만 가져야 한다.
O (OCP : Open/Closed Principle)
확장에는 열려(Open) 있으나, 변경에는 닫혀(Closed)있어야 한다.
L (LSP : Liskov’s Substitution Principle)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
I (ISP : Interface Segregation Principle)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
D (DIP : Dependency Inversion Principle)
추상화에 의존한다. 구체화에 의존하면 안된다.
OPP와 반대되는 프로그래밍 기법은?
절차지향 : 순차적인 처리를 중시하는 프로그래밍 기법
오버라이딩과 오버로딩의 차이점은?
오버라이딩: 상위 클래스에 있는 메소드를 하위 클래스에서 재정의 하는 것을 말합니다.
오버로딩: 매개변수의 타입이나 개수를 다르게 하여 같은 이름의 메소드를 여러개 정의하는 것을 말합니다.
추상클래스란?
클래스 내에 추상메소드가 하나 이상 포함되거나 추상클래스로 정의된 경우를 말합니다.
추상메소드란?
자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미합니다.
인터페이스란?
- 모든 메소드가 추상메소드로만 이루어져 있는 것
인터페이스의 역할과 필요 이유에 대해 설명해주세요.
역할 : 인터페이스는 개발코드와 객체가 서로 통신하는 접점
필요이유 : 개발코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서 입니다.
추상클래스와 인터페이스 공통점과 차이점
-공통점:
new 연산자로 인스턴스 생성이 불가능합니다.
-차이점:
추상클래스는 다중상속이 불가능하고,
인터페이스는 다중상속이 가능합니다.
접근제한자란? 접근제한자 종류는?
변수 또는 메소드의 접근 범위를 정해주기 위한 자바의 예약어입니다.
1)퍼블릭: 모든 곳에서 접근이 가능
2)프로텍티드: 해당 패키지와 자식클래스에서만
3)디폴트: 해당 패키지에서만
4)프라이빗: 해당 클래스에서만 접근이 가능합니다.
Error와 Exception의 차이를 설명해주세요.
1.에러: 실행 중에 일어날 수 있는 치명적인 오류입니다.
2:익셉션: 에러보다 비교적 경미한 오류로 try-catch를 통해 해결할 수 있습니다.
Checked Exception과 Unchecked Exception 차이점은?
- 체크예외 : 런타임 익셉션의 하위클래스가 아닙니다. 익셉션 클래스의 하위클래스입니다.
반드시 예외처리를 해야합니다. (try cath 또는 throw)
- 언체크예외 : 런타임 익셉션의 하위클래스입니다. 에러처리를 강제하지 않습니다.
실행중(runtime) 에 발생할 수 있는 예외를 의미합니다.
스레드와 멀티스레드란?
- 스레드 : 프로세스의 작업단위
*프로세스 : 실행중인 프로그램
- 멀티스레드 : 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 말합니다.
스레드 생성방법
- Runnable 인터페이스를 구현하는 방법
- Thread 클래스를 상속받는 방법
스레드 장단점
스레드 장점 : 빠른 프로세스 생성, 적은 메모리사용
스레드 단점 : 교착상태에 빠질수있습니다
*교착상태 – 다중프로그래밍 체제에서 하나 또는 그이상의 프로세스가 수행할 수 없는 어떤 특정시간을 기다리는 상태
멀티스레드 장단점
- 장점: 시스템 자원 소모 감소, 시스템 처리량 증가, 프로그램응답시간단축
- 단점 : 스레드 하나가 문제 시 모든 프로세스가 종료될 수 있다 , 동기화 문제가 발생할 수 있음
'데드락'이란 무엇이고 이를 해결하기 위한 방법을 설명해보시오.
데드락이란 둘이상의 쓰레드가 lock을 획득하기 위해 기다리는데,
이 lock을 잡고있는 쓰레드도 똑같이 lock을 기다리며 서로 블록상태에 놓이는 것을 말합니다.
해결방법은 자원유형에 따라 우선순위를 선정하여 자원을 선점하게하고, 공유불가능한 상호배제의 조건을 제거합니다.
문자열 상수 풀(String Constant Pool)에 대해 설명해주세요.
-문자열 상수 풀은 Java의 힙 영역에 존재하는 특수한 공간으로 문자열 리터럴을 저장하는 용도이며, 이 저장 공간을 통해서 문자열을 관리합니다.
- 문자열상수풀에 동일한 문자열이 이미 존재할 때 :
해당 문자열에 대한 참조를 반환합니다.
-문자열상수풀에 동일한 문자열이 존재하지 않을 때:
풀에 새로운 문자열을 생성하고 문자열에 대한 참조 값을 반환합니다.
-new키워드를 이용해 string을 생성 할 때 :
heap영역에 새로운 String객체를 생성합니다.
따라서 메모리 공간 효율을 고려한다면 문자열 생성시 new키워드보다 문자열리터럴을 사용하는 것이 더 좋습니다.
스트링과 스트링버퍼·스트링빌더의 차이점
-스트링은 불변속성/ 스트링 버퍼·빌더는 가변속성입니다.
- 버퍼·빌더는 스트링보다 무겁고 속도가 느립니다.
문자열 추가 또는 변경 작업이 많을 경우는 스트링 버퍼·빌더
작업이 적을 경우는 스트링을 사용이 좋습니다.
스트링버퍼와 스트링빌더 차이점
StringBuffer는 멀티스레드환경에서도 동기화를 지원해 멀티스레드 환경에서,
StringBuilder는 동기화를 보장하지않으므로 싱글스레드환경에서 사용하는 것이좋다.
Casting 형변환이란?
-변수나 리터럴의 타입을 다른 타입으로 변환하는 것입니다
- 캐스팅은 OOP의 다형성과 관련이 있기 때문에 매우 중요합니다
업캐스팅과 다운캐스팅 차이점
1)업캐스팅
-자식클래스에서 부모클래스로 형변환하는 것
-형만 정확하다면 묵시적으로 캐스팅이 가능 (묵시적형변환)
2)다운캐스팅
-업캐스팅 한 것을 다시 원래의 형으로 복원 시켜주는 것
-원래의 형을 꼭 명시해주어야 합니다. (명시적형변환)
묵시적 형변환과 명시적 형변환 차이점
1)묵시적 형변환
-형변환 연산자를 사용하지 않아도 자동으로 이루어지는 형변환을 의미합니다
2)명시적 형변환
-더 큰 범위에서 작은 범위로의 형변환을 의미합니다.
instance of 란?
객체의 타입을 확인하는데 사용하는 연산자입니다.
형변환이 가능하는지 해당여부를 ture 혹은 false로 가르쳐줍니다.
제너릭이란?
클래스 내부에서 타입을 지정하는 것이 아닌
외부에서 사용자에 의해 지정되는 것을 의미한다.
한마디로 특정(Specific) 타입을 미리 지정해주는 것이 아닌
필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입입니다.
제너릭 특징
코드의 안정성과 재사용성을 높여줍니다.
객체 타입을 컴파일 시에 체크하고, 형변환 하지 않아도 됩니다.
컬렉션이란?
- 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현 해 놓은 것.
- List : 순서가 있는 데이터의 집합 (중복o)
- Set : 순서를 유지하지 않는 데이터 집합 (중복x)
- Map: key와 value의 쌍으로 이루어진 데이터 집합(키 중복x 순서유지x)
컬렉션 클래스에서 제네릭을 사용하는 이유를 설명하시오
컬렉션 클래스에서 제네릭을 사용하면 컴파일러는 특정 타입만 포함 될 수 있도록 컬렉션을 제한합니다.
컬렉션 클래스에 저장하는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일타임에 잡아낼 수 있도록 도와줍니다.
Array(배열) 와 List(리스트) 차이점은?
- Array는 삽입과 삭제 시 리스트보다 느립니다.
- List는 검색 시 배열보다 느리고, 추가와 삭제가 빠릅니다.
- 배열은 인덱스가 있고, 리스트는 인덱스가 없습니다.
ArrayList<>란?
배열의 크기를 임의적으로 변화시킬 수 있음, list에 들어갈 데이터 타입 설정 가능
== 와 equals() 차이
Equals 내용 비교이고,
== 주소 값 비교입니다.
length , length() , size() 에 대해 각각 설명해주세요.
length : 배열 길이
length() : 문자열 길이 / size() : 컬렉션 프레임 워크 (arraylist)타입의 길이
싱글톤 패턴이란?
하나의 클래스에 오직 하나의 객체 인스턴스만 가지고, 그 인스턴스에 대한 전역접근을 제공하는 디자인 패턴*입니다.
* 디자인 패턴: 프로그램을 설계할때 발생했던 문제점들을 객체 간 상호관계 등을 통해 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것.
직렬화란?
자바 내부에서 사용되는 객체 또는 데이터를 외부의 자바시스템에서도 사용할수있도록 바이트형태로 데이터를 변환하는 기술
serialVersionUID
직렬화하는데 사용되는 식별자이다.
serialVersionUID 사용이유
serialVersionUID값을 저장할 때 클래스버전이 맞는지 확인하기 위한 용도이다.
콜백함수란?
파라미터로 전달받은 함수를 말합니다.
다른 코드의 인수로서 넘겨주는 실행가능한 코드
call by name 이란?
- 매개변수없이 이름으로만 호출하는 메소드
Call by value와 call by reference 차이점은?
Call by value(값에 의한 호출, 값의 복사) :
인자로 받은 값을 복사하여 처리
기본형(원시형)의 경우 call by value 방식으로 전달된다.
Call by reference(참조에 의한 호출, 주소복사) :
인자로 받은 값의 주소를 참조하여 직접 영향을 줌
객체는 call by reference 방식으로 전달된다
자바는 call by value와 call by reference 중에 어디에 해당하는가?
- 오직! call by value에 해당합니다.
- 자바는 메소드의 인자로 객체를 넘길 때, 실제로 객체가 존재하는 메모리 주소를 넘겨주는 것이 아닌,
객체가 존재하는 메모리 주소를 참조하는 임의의 변수를 heap 영역에 만들고, 만들어진 임의의 변수를 넘겨주게 됩니다.
(이러한 이유로 자바가 메모리를 많이 사용한다는 것을 알 수있습니다.)
라이브러리와 프레임워크란?
-프레임워크 : 뼈대나 기반 구조를 뜻하고 제어의 역전 개념이 적용된 기술입니다.
어떤 것을 만드느냐에 따라 공통적인 부분은
프레임워크를 사용하는 반제품 같은 느낌
-라이브러리 : 단순 활용 가능한 도구들의 집합입니다.
내가 만들고 있는 프로그램에 사용할 부품을 가져오는 느낌
라이브러리와 프레임워크 차이점
제어 흐름의 권한이 어디에 있는가입니다.
-라이브러리를 사용할 땐 개발자가 직접 코드 흐름을 제어해야하고
-프레임워크는 프레임워크가 짜놓은 틀 안에서 개발자가 필요한 코드를 작성합니다.
IOC란? (제어의역전)
컨트롤의 제어권이 개발자가 아닌 프레임워크에 있다는 것입니다.
STS(Spring Tool Suite)
IDE 통합개발환경
스프링프레임워크란?
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로
동적인 웹 사이트 개발을 하기 위해 여러가지 서비스를 제공해줍니다.
특징은 의존성주입과 IOC가 있습니다.
전자정부프레임워크란?
대한민국 공공기관의 웹 서비스 개발 시
사용을 권장하는 프레임워크로 spring, mybatis, jsp, 타일즈*의 조합을 이야기합니다.
*타일즈: 웹페이지 상단이나 하단에 반복적으로 사용되는 정보를 한곳에 모아서 관리하는 프레임워크
API(Application Programming Interface)란?
어플리케이션을 프로그래밍 하는데 쓰이는 인터페이스로, 프로그램과 프로그램을 연결해주는 중간 다리 역할 입니다.
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
리플렉션이란?
- 구체적인 클래스타입을 알지못해도 클래스의 메서드, 타입,변수 등을 접근할수있도록 해주는 API
- 런타임에 동적으로 특정 클래스의 정보를 추출 해낼수있는 프로그래밍 기법
JDBC란 ?
-자바에서 DB의 종류에 상관없이 데이터베이스에 더욱 쉽게 접근 할 수 있도록 하는 API입니다.
마이바티스란?
자바의 관계형 데이터베이스 프로그래밍을 보다 쉽게 도와주는 프레임워크
Mybatis는 JDBC를 보다 편하게 사용하기 위해 개발되었습니다.
SQL문으로 DB에 접근하다보면 경우에 따라 SQL 문 변경이 필요한 경우가 있습니다.
Mybatis를 활용해 단편적으로 제어문, 반복문등의 처리가 가능하며 동적으로 변경이 가능합니다.
Spring JDBC란?
기존의 JDBC 단점 극복, 반복적으로 해야 하는 많은 작업들을 대신해줍니다.
Connection 열기 닫기, Statement 준비 실행
ConnectionPool 이란?
DB와 항상 연결되어있는 객체들. DB와의 연결을 위해서 사용하는 객체입니다.
DataSource란?
ConnectionPool관리 객체, 커넥션풀 이용해서 연결, 반납하는 작업을 수행합니다.
RESTFUL이란?
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것.
해당 URL만 보더라도 바로 어떤 작업을 하는지를 알수있도록
하나의 데이터는 하나의 URL을 갖도록 작업하는 방식
HTTP URI를 통해 자원을 명시하고 HTTP Method(get, post, put, delete등)을 통해
해당자원에 대한 CRUD Operation을 적용하는 것을 의미.
REST API (RESTFUL API) 란?
REST원리를 따르는 API입니다.
REST API 설계 규칙
- URI 는 동사보다 명사, 대문자보다 소문자를 사용하여야 한다
- 마지막에 슬래시를 포함하지 않는다
- 언더바(띄어쓰기)대신 하이픈(-)을 사용한다
-파일확장자는 URI에 포함하지않는다.
URL과 URI의 차이점은?
-모든 url 은 uri입니다.
URL : 서버상의 파일들의 위치
www.google.com/search
URI : 인터넷상의 자원을 식별하기위한 문자구성
www.google.com/search?q=ui
OSI 7계층에 대해 설명해보세요.
OSI 7계층은 네트워킹에 대한 표준입니다.
1. 물리 - 데이터 전송하는 역할 (케이블)
2. 데이터링크 - 송수신되는 정보관리해 안전하게 전달되게 도와줌 (브릿지)
3. 네트워크 - 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 (라우터 , IP)
4. 전송 - TCP와 UDP 프로토콜을 통해 통신을 활성화
5. 세션 - 데이터가 통신하기 위한 논리적 연결담당 (API, Socket)
6. 표현 - 파일인코딩, 명령어 암호화 (JPEG)
7. 응용 - 최종목적지로 응용서비스 수행 (HTTP)
쿠키와 세션이란?
쿠키 - 사용자가 특정 웹서버에 접속할때, 생성되는 개인아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시파일
세션 - 특정 웹사이트에서 사용자가 머무르는 기간
-세션에 관련된 데이터는 Server에 저장된다
쿠키와 세션 사용 이유 무엇입니까?
- HTTP의 비연결지향이라는 특징을 보안하기 위함 입니다.
- 이에 따라 HTTP 프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용합니다.
IP란?
인터넷에서 데이터전달 프로토콜
TCP 와 UDP 차이점
TCP – 연결형 프로토콜
정확한 전송을 보장하기 위해 세션을 수립
UDP – 비연결형프로토콜
데이터를 빨리 전달하는 것을 목적으로 함
IPv6란?
=128비트
IPv4(32비트)주소가 자라 대안으로 제안된 인터넷프로토콜
http 와 https 차이점
- http : 웹서버 통신을 위한 프로토콜 80번 포트 사용
- https: 암호화된 통신을 제공하는 http 느리지만 개인정보 등의 보안 유지를 위해 사용합니다.
HTTP 오류 코드 종류에 대해 몇 가지 말해보세요.
자주보는 오류코드:
405: 요청한 메소드는 서버에서 알고잇지만 제거되었고 사용할수없음
404: 서버는 요청받은 리소스를 찾을 수없음 (url을 찾을수없음)
403: 클라이언트는 콘텐츠에 접근할 권리가 없음
503: 서버가 요청을 처리할 준비가 되지않음
505: 서버에서 지원되지않은 HTTP버전을 클라이언트가 요청함
1XX(정보): 요청을 받았으며 프로세스를 계속한다.
2XX(성공): 요청을 성공적으로 받았으며 인식했고 수용하였다.
3XX(리다이렉션): 요청완료를 위해 추가 작업 조치가 필요하다
4XX(클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할수없다.
5XX(서버 오류): 서버 측의 오류로 올바른 요청을 처리할 수 없음
Build 란?
코드를 컴파일, 패키징, 테스트. 배포 등의 작업들을 말한다.
Build Tool 이란?
말 그대로 Build를 도와주는 도구로, 작업들을 일관되게 할 수 있다
스프링과 스프링부트 차이점
- Embed Tomcat을 사용하기 때문에, (Spring Boot 내부에 Tomcat이 포함되어있다.)
따로 Tomcat을 설치하거나 매번 버전을 관리해 주어야 하는 수고로움을 덜어준다.
- starter을 통한 dependency 자동화 :
손쉬운 빌드 구성을 할 수있습니다. 이전에는 version관리에 어려움이 많았으나
starter가 대부분의 dependency를 관리해주기 때문에 이러한 걱정을 많이 덜게 되었습니다.
- XML설정을 하지 않아도 된다.
- jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.
ORM이란 (Object Relational Mapping)?
- 객체와 DB테이블이 매핑을 이루는 것 (예: findAll())
- 객체간의 관계를 바탕으로 SQL을 자동으로 생성해줍니다.
- ORM을 사용하면 개발자가 쿼리를 직접작성하지 않아도 데이터베이스의 데이터를 처리할수있습니다.
JPA(Java Persistence API)란?
자바 ORM의 기술에 대한 API 표준
AOP이란?
관점지향프로그래밍으로,
트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로 하는 기능의 경우 해당 기능을 분리해 비즈니스 로직 앞, 뒤 등 원하는 지점에 해당 공통 관심사를 수행할 수 있게 함으로 중복 코드를 줄이는 방식
Servlet 과 jsp 에 대해 설명해주세요.
- Servlet : java코드 안에 html코드
콘테이너가 이해할수있게 구성된 순수 자바코드로만 이루어진것
- Jsp : html코드 안에 java코드
html기반에 java코드를 블록화하여 삽입한것
Spring MVC란?
model, view, controller의 약자로
-모델은 비지니스 로직을 처리하는 그릇
-뷰는 유저 인터페이스가 표현되는 실제로 보여지는 부분입니다.
-컨트롤러는 사용자의 요청을 처리합니다.
Get / Post 방식에 대해 설명해보세요
GET - 클라이언트에서 서버로 데이터를 전달할 때 주소 뒤에 key와 value가 결합된 쿼리스트링 형태로 전달하는 것입니다.
POST - 일정 크기 이상의 데이터를 보낼 때 사용합니다. 쿼리스트링 데이터 뿐만 아니라 라디오버튼, 텍스트박스 같은 객체들의 값도 전송 가능합니다.
Get / Post 방식 차이점
get은 데이터를 호출 할 때 사용
post는 데이터를 저장하는 목적으로 사용
DI란 (의존성 주입)?
- 특정 객체에 필요한 객체를 외부에서 결정해서 연결하는 것을 의미합니다.
의존성 주입 방식 3가지
@Autowired - 애너테이션사용(순환참조문제로 생성자방식이 권장)
생성자 - 생성자를 작성해 객체주입(권장하는방식)
Setter - Setter메서드 작성해 객체를 주입(메서드에 @Autowired애너테이션 적용필요)
Request 와 response 의 차이점은?
-Request (요청) : 클라이언트에서 넘어오는 데이터를 받기 위한 객체
-Response (응답) : 서버에서 클라이언트로 데이터를 전달하기 위한 객체
디스패쳐서블릿이란(dispatcherServlet)?
- 어플리케이션으로 들어오는 request를 받는 관문입니다.
- Request를 실제로 처리할 controller에게 전달하고 그 결과값을 받아서 view에게 전달하여 적절한 응답을 생성 할 수 있도록 흐름을 제어합니다.
스프링 흐름에 대해 간략하게 서술해주세요.
request
→ dispatcherServlet (web.xml)
→ controller
→ 로직처리(service , db접근)
→ view전달
→ response
중요 어노테이션 몇가지만 서술해보세요.
@RequestMapping : 컨트롤러로 등록된 클래스내에 특정 메서드를 요청되는 URL과 매칭 시키는 어노테이션
@Autowired : Spring에서 자동으로 의존성 주입하기 위한 어노테이션
@ResponseBody : 비동기처리 JSON 형태 데이터 주고받는 경우
@RequsetParam : 단일 파라미터를 전달 받을 때 사용
Controller란?
MVC패턴의 C에 해당하고, 주로 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는역할을 합니다.
Bean
스프링에서 관리하는 자바객체입니다.
POJO를 Bean라고 부른다
POJO : 본래 자바장점을 살리는 특정기술에 종속되어 동작하는 것이 아닌 오래된 방식의 순수한 자바객체
DAO(Data Access Object)란?
- 데이터를 조회하거나 조작하는 기능 CRUD담당
Service
여러 개의 DAO를 묶어 합쳐진 것
사용자의 요청을 처리하기 위한 기능을 제공
DAO와 Service의 차이점 :
DAO는 단일 데이터 접근,갱신만 처리
Service는 여러DAO를 호출하여 여러 번의 데이터 접근,갱신
DTO(Data Transfer Object)란?
계층 간 데이터 교환을 하기 위해 사용하는 객체로,
DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)입니다.
VO(Value Object)란?
- 값 오브젝트로써 값을 위해 쓰입니다. read-Only 특징을 가집니다.
DTO와 VO의 차이점 :
VO는 readOnly 로 getter만 가지고, DTO는 getter와setter를 가지고 있어 값이 변할 수 있습니다.
Entity란?
Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로,
데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체입니다.
Repository란?
엔티티에 의해 생성된 DB에 접근하는 메서드들을(예: findAll()) 사용하기 위한 인터페이스입니다.
유저가 작성한 데이터값이 DB에 저장되는 순서 :
유저 -> form -> DTO -> DAO -> DB
Redirect<url> 와 Forward<url> 차이점
리다이렉트는 url주소가 달라지고 포워드는 url주소가 달라지지않으며,
리다이렉트는 객체를 재사용하지않고, 포워드는 객체를 재사용합니다
Maven 과 Gradle 에 대해 설명해주세요.
- Maven으로 프로젝트를 생성하게 되면 pom.xml이 생성되고,
Gradle로 프로젝트를 생성하게 되면 build.gradle, settings.gradle이 생성됩니다.
- Maven : 정형화된 빌드 시스템으로, 플러그인으로 구동되어 build를 진행하게 됩니다.
- Gradle : JVM 기반의 빌드 시스템으로, Task 기반으로 작업을 수행합니다. Task는 종속성에 따라서 다음 작업을 연결하여 수행하고, 캐시를 이용하여 더 시간이 단축됩니다.
[Project Metadata]
JAR (Java ARchive) 와 WAR (Web application ARchive)에 대해 설명해주세요.
- JAR : Class, 라이브러리 압축 파일로 JRE(Java Runtime Environment)만 있어도 실행 가능합니다.
- WAR : Servlet / Jsp 컨테이너에 배치할 수 있는, 웹 애플리케이션을 구성할 때의 필요한 요소들의 압축 파일로, WEB(웹서버) 혹은 WAS(웹 컨테이너)가 필요합니다.
JRE란(java runtime environment)? 자바 런타임 환경
*런타임환경 : 어떤 소프트웨어를 실행하기위한 또다른 소프트웨어
웹서버와 WAS 차이점
웹서버 - 정적컨텐츠를 제공하는서버(html,css,js)
Ex) 아파치
WAS - DB조회나 로직을 처리하는 동적인 컨텐츠를 제공하는 서버
Ex) 톰캣
웹서버 없이 WAS만 존재할수있어, WAS는 웹서버를 포함하는 개념이다.
웹서버 사용이유
-WAS가 해야하는 일의 부담을 줄이고, WAS의 환경설정파일을 외부에 노출시키지않기위함
템플릿엔진이란?
동적컨텐츠를 생성하는 방법으로 주로 기능이 view를 만드는 것.
스트링부트가 지원하는 템플릿엔진- 타임리프,머스타치등.
타임리프 장점
- 코드를 변경하지 않기 때문에 디자인 팀과 개발 팀 간의 협업이 편합니다
- 서버 상에서 동작하지 않아도 되기 때문에 서버 동작 없이 화면을 확인 할 수 있습니다.
데이터베이스 사용 이유
데이터의 보안성 - 인가된 사용자들만 DB와 데이터베이스내의 자원에 접근 가능하도록 계정관리 또는 접근 권한 설정
데이터의 일관성 - 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 불일치성 배제 가능
데이터 중복 최소화 - 데이터를 통합해 관리함으로써 자료와 데이터의 중복 문제 해결 가능
데이터베이스 정규화
중복을 최대한줄여 데이터를 구조화하여 불필요한 데이터를 제거하고 데이터를 논리적으로 저장하여 이상현상이 안일어나게 하는 것
제1정규화-모든항목에 값이있어야하며, 중복기능 열이없어야한다
제2정규화-부분적함수종속을 제거하는 정규화
제3정규화-이행적함수종속을 제거하는 정규화
트리거
자동으로 실행되도록 정의된 저장 프로시저.
INSERT / UPDATE / DELETE 문에 대한 응답으로 자동호출
DB 옵티마이저
옵티마이저는 SQL을 가장빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는
DBMS 내부의 핵심 엔진이다.
DBMS 가 무엇인가요?
데이터 베이스 관리시스템 DataBase Management System)을 말합니다.
종류로는 오라클, MySQL , MS-SQL, MariaDB 가 있습니다.
관계형 데이터베이스(RDBMS = Relational DataBase Managment System)란?
관계형 데이터베이스를 생성하고 수정하고 관리할수있는 소프트웨어 (ex: 오라클, 마이에스큐엘 등)
*RDBMS는 DBMS에 속한다.
Oracle 특징에 대해 설명해보세요.
-대용량 처리에 적합합니다.
-고성능 트랜잭션 처리를 제공하여 속도가 빠릅니다.
-SQL문을 실행하는 가장 효율적인 방법을 선택한다.
데이터베이스 DML, DDL, DCL, TCL 이란?
DDL - (데이터 조작어) 테이블 구조 변경 명령어로 CREATE나 DROP, ALTER등이 있습니다.
DCL - (데이터 제어어) 테이블 권한을 주거나 회수하는 명령어로 GRANT나 REVOKE와 같은 명령어가 있습니다.
DML - (데이터 조작어) 테이블 데이터 변경 명령어로 SELECT, INSERT UPDATE, DELETE 등이 있습니다.
TCL - 트랜잭션 제어어로 커밋 롤백 등의 명령어가 있습니다.
트랜잭션이란?
데이터베이스에 상태를 변화시키기 위해 수행하는 작업의 단위
특징으로는 원자성, 일관성, 독립성, 지속성이있습니다.
*원자성은 작업을 모두 처리하거나 처리하지 못할 경우
이전 상태로 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능입니다.
트랜잭션의 commit, rollback연산 = TCL
Commit 트랜잭션이 잘 끝났다 저장해라.
Rollback 이전으로 돌아가게 연산된 결과를 다시취소시킨다.
DEETE, TRUNCATE, DROP차이점
-DELETE는 원하는 데이터만 골라서 지울 수 있고 삭제 후 되돌릴 수 있지만
-DROP은 테이블 자체를 완전히 삭제하는 방식으로 복구가 불가능합니다.
-TRUNCATE 테이블의 데이터를 전부 삭제하고 사용 하고 있는 공간 반납
JOIN이란?
2개 이상의 테이블을 연결하여 데이터를 검색하는 방법입니다.
기본키,외래키 값을 사용하여 조인합니다.
대표적으로 이너조인과 아우터조인이 있습니다.
이너조인과 아우터조인
- 이너조인: 교집합, 값이 일치하는 행만 반환함. null값은 포함되지 않음
- 아우터조인 : 합집합 , 한쪽 값이 없더라도 행을 반환. 한쪽엔 데이터가 존재하고 다른 쪽엔 존재하지 않는 경우
그 데이터를 NULL값으로 출력해냅니다.
서브쿼리란?
하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다.
스키마란?
- 데이터베이스의 구조와 제약 조건에 관해 전반적인 명세를 기술한 것을 말합니다.
-속성(Attribute), 개체(Entity), 관계(Relation)에 대한 정의와 이 것들이 유지해야 할 제약 조건을 기술한 것입니다.
VIEW 뷰 (가상테이블)
데이터가 없고 조회만 가능한 가상의 테이블
시퀀스란?
순서대로 번호를 만들어주는 것입니다.
INDEX에 대해 설명해주세요.
DB의 검색 속도를 빠르게 도와주는 역할입니다.
- 단점 : 데이터를 가져올 때 성능은 빨라지지만 데이터 삽입, 변경 등이 일어날 때 매번 인덱스가 변경되면 성능이 떨어질 수 있습니다. 그러므로 데이터 필터링을 사용할 때 적합합니다.
무결성 제약 조건이란?
데이터베이스의 정확성, 일관성을 보장하기 위해
저장, 삭제, 수정 등을 제약하기 위한 조건을 뜻합니다.
무결성 제약 조건 종류
1. 개체 무결성 - 기본키는 Null값이 올 수 없고 중복 될 수 없다.
2. 참조 무결성 - 외래키는 Null이거나 참조하는 릴레이션의 기본키 값과 동일 해야 한다.
3. 도메인 무결성 - 속성들의 값은 정의된 도메인에 속한 값이어야 합니다.
4. 고유 무결성 - 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우,그 속성 값은 모두 달라야 한다
5. NULL 무결성 - 특정 속성값에 NULL이 올수없다는 조건이 주어진 경우 그 속성값은 NUL값이 올수없다
6. 키 무결성 - 각 릴레이션은 최소한 한 개 이상의 키가 존재해야 합니다.
테이블이란?
말그대로 표입니다. 대표적으로 행과 열로 구성되어있습니다.
키란?
튜플들을 서로 구분할 수 있는 기준이 되는 속성
키 종류
기본키 - 후보키 중에서 선택한 주키(Main Key)입니다.
후보키 - 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말합니다.
대체키 - 후보키 중 기본키를 제외한 나머지 후보키
슈퍼키 - 각 행을 유일하게 식별할 수 있는 속성들의 집합입니다.
서로 구분만 할 수 있다면 '슈퍼키'라고 할 수 있습니다.
외래키 - 한 테이블이 다른 테이블의 기본키를 참조해서 테이블 간의 관계를 만드는 것을 의미합니다.
*비유하자면 대통령후보 = 후보키 / 당첨된사람 = 기본키 / 기본키가 되지못한 키 = 대체키 / 다른나라대통령 = 외래키
GROUP BY
컬럼값들의 개별그룹마다 합계를 구할수있습니다.
자바스크립트 특징에 대해 설명해주세요
1. 자바스크립트는 객체 기반의 스크립트 언어입니다.
2. 자바스크립트는 동적이며, 타입을 명시할 필요가 없는 인터프리터 언어입니다.
3. 자바스크립트는 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현할 수 있습니다.
컴파일러와 인터프리터 차이점은?
컴파일러(compiler) :
전체 파일을 스캔하여 한꺼번에 번역한다.
초기 스캔시간이 오래 걸리지만, 한번 실행 파일이 만들어지고 나면 빠르다.
기계어 번역과정에서 더 많은 메모리를 사용한다.
전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
대표적인 언어로 C, C++, JAVA 등이 있다.
인터프리터(interpreter) :
프로그램 실행시 한 번에 한 문장씩 번역한다.
한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리다.
컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 실행 후에 오류를 알 수 있다.
대표적인 언어로 Python, Javascript 등이 있다.
DOM(Document Object Model)이란?
- 브라우저 객체모델(BOM)중 하나이며, XML HTML 문서에 접근하기 위한 일종의 인터페이스입니다.
- 단어 그대로 '도큐먼트를 객체로 표현하는 모델' 문서객체를 의미하며,
문서객체란 HTML 문서들을 JavaScript가 읽을 수 있는 객체 (Object)로 만든 것입니다.
- DOM은 트리형식의 자료 구조이며, 트리의 최상단 root에 html이 위치하며 하위 노드에 head, body가 위치하고 있으며 그 하위에 여러 노드들이 포함 되어있습니다.
DOM객체 탐색 제어방법은?
- getElementBy Id(), Name(), ClassName :
id, tag 이름, 클래스 이름
- querySelector(), querySelectorAll() :
CSS selector를 사용한다.
jQuery 에 대해 설명해보세요
달러 표시를 이용해 코드가 간결해졌고,
자바스크립트의 라이브러리로
자바스크립트를 조금 더 편리하게 사용하기 위한 언어입니다.
==와 ===의 차이점은?
==은 값 일치 여부만 확인하고
===은 타입도 같이 확인합니다.
AJAX (Asynchronous JavaScript and XML)란?
- Ajax는 비동기 통신 웹개발 기법입니다.
- Ajax는 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다. (비동기)
*비동기 - 동시에 X / 동기 - 동시에 O
- 서버와는 다음과 같은 다양한 형태의 데이터를 주고받을 수 있습니다.
XML JSON HTML 텍스트파일등
JSON이란?
자바스크립트 객체 표기법으로 텍스트 기반의 데이터 교환 포맷입니다. 이름과 값의 쌍으로 구성됩니다.
XML이란?
- HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)입니다.
- XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌습니다.
This란?
이것이라는 뜻의 자바스크립트 예약어, 자신이 속한 객체를 가르키는 자기참조 변수입니다.
호이스팅에 대해 설명해보세요
- 호이스팅이란 선언된 변수와 함수를 가져가서 메모리에 기억해두는 것입니다.
- 함수 내부에서 변수를 정의할 때 var를 사용하면 지역변수,
var를 생략하면 자동 전역변수로 선언되는 문제점이 있어 var보다 새로 만들어진 let 사용을 지향합니다.
웹 표준 준수에 대해 설명해보세요.
사용자가 어떤 브라우저나 기기를 사용하더라도
내용을 동일하게 볼 수 있도록 하는 것이 웹 표준이다.
웹 접근성에 대해 설명해보세요.
어떤 사용자든 쉽게 웹 콘텐츠를 인지하고, 내용을 이해하고, 편리하게 사용할수 있으며, 견고성이 있어야합니다.
시멘틱태그와 장점에 대해 설명해보세요.
header, nav, aside, section,article, footer, main등등이 있습니다.
장점 : 검색 결과의 노출에 유리 , 웹 접근성에 효율적, 유지 보수의 용이합니다.
절대경로와 상대경로 차이점
절대경로 – 어떠한 웹페이지나 파일이 가지고 있는 고유한 경로
상대경로 – 상대적인경로, 현재위치한곳이 기준으로해서 그곳의위치
UX와 UI차이점에 대해 설명해보세요.
UX는 경험이고 UI는 그 경험을 실현시켜주는 수단입니다.
UI는 유저가 사용하는 서비스를 편리하게 이용할 수 있게 디자인된 것 UX는 유저의 경험을 의미
CLI GUI NUI OUI 각각의 의미에 대해 서술해보세요.
CLI – 명령어 라인 인터페이스 (키보드 이용한 입출력)
GUI – 그래픽 유저 인터페이스 (마우스를 이용한 입출력)
NUI – 자연스러운 사용자 인터페이스 (사람 신체 접촉 입출력)
OUI – 유기적 사용자 인터페이스 (장치에 벗어난 자유로운 상태)
block, inline, inline-block의 차이점에 대해 서술해보세요.
Block - 하나의 라인을 무조건 차지하게 됩니다.
Inline - 내용 만큼의 영역만 가지게 됩니다.
Inline-block - 내용 만큼의 영역만 가지게 됩니다.
Inline과 차이점은 width와 height 속성을 통해 사이즈 조절이 가능합니다.
Window64 , 32bit차이
CPU가 처리하는 데이터 최소단위인 레지스터의 비트개수
애자일이란?
짧은주기의 개발단위를 반복하여 하나의 큰프로젝트를 완성해나가는 방식입니다. 애자일의 핵심은 협력과 피드백입니다.
개발시 중요한 요소
예외처리, 테스트, 협업
변수 명명법이 중요한이유
컴퓨터가 이해하는 코드는 누구든 짤수있으나, 코드는 사람이 이해할수있게 짜야합니다.
형상관리란? (깃허브)
소프트웨어의 변경사항을 체계적으로 관리하는것
😁인성면접
1분 자기소개, 간단한 자기소개 준비는 필수입니다!!!
프로젝트 관련 면접
프로젝트에서 어려웠던 부분이나 아쉬웠던 부분, 어떻게 해결했는지?
- 어려웠던 부분 : 프로젝트 진행 시 어려웠던 문제를 얘기하면 되고, 어떤식으로 해결했는지 꼭 정리하여 말하기
- 아쉬웠던 부분 : 원하는 기능을 다 넣지 못했던 게 좀 아쉬웠습니다. 개인적으로 추가로 구현하고 싶은 기능이있었는데, 기간이 조금 빠듯했던 것 같습니다. 여유시간이 생긴다면 복습을 하며 구현을 할 예정입니다.
진행했던 프로젝트에서 담당했던 부분, 구현했던 기술은?
- 개발 환경 : 개발 환경 정리해 말하기 (포폴용 ppt에도 기재)
- 담당 역할 : 담당 역할 최대한 내가 많이 참여해서 지분이 많았던 것을 어필하기!
인성면접
"왜 개발자가 되려고 하는가?" (또는 다른 분야로 바꾼 이유)
- 문제를 마주하고 능동적으로 해결해야 한다는 직업적 성격이 매력적으로 느껴졌습니다.
- 개발교육을 받기전에 이전에 일했던 곳의 사이트를 간단하게 수정하며 만들며 흥미를 느낀 것이 계기가 되었습니다.
"어떤 개발자가 되고 싶은가?'
-아래 링크에서 개발자 선배님들 좋은 댓글 참고하기
https://okky.kr/articles/1175857
"개발을 기본적으로 좋아하는 지?"
- 이전에도 관심이 있었는데, 이번 교육을 받고 배운 것을 토대로 직접 코드를 치고 그에 따른 변화하는 것들을 보면서 개발에 대한 흥미를 확실히 느꼈습니다.
- 블로그에 공부를하며 정리하며 공유하는 것에도 즐거움을 느꼈었습니다. 제 블로그 주소는..
"취미와 특기가 어떻게 되나요?"
자기관리, 개발과 어떻게서든 엮어 말할 수 있는 취미와 특기를 말하는 것이 좋음.
"제일 자신있는 개발기술과 자신없는 개발기술은 어떻게 되나요?"
- 교육을 받을때 가장 비중 있었던 자바가 가장 낫지 않을까 생각이듭니다,
커리큘럼에서 DB쪽 배움기간이 짧았던 터라, 개인적으로 더 공부할 필요성을 느낍니다.
"스트레스 받을때 주로 무얼하나요?"
- 스트레스 받을때는 보통 산책을 하면서 혼자 스트레스 근원에 대해서 생각해보고,
주변 사람들에게 조언을 구해 어떤 점이 문제였는지 어떻게 해결할 것인지 생각해서 푸는 편입니다.
"본인이 타인을 대하는 방식이 어떻게 되는지 말해주세요"
- 상대방의 성격에 따라 맞추는 편입니다. 누구에게든 도움을 주려하고, 좋은 사람이 되고 싶어하는 편입니다.
"성격의 장단점과 주위에서 어떻게 평가받고 있는 지 (단점을 고치려 노력한 부분도)"
- 장점을 남을 돕는 것을 좋아하고, 공부했던 걸 기록하는 것을 좋아해서 팀원들이 전업블로거 될 거냐 라는 농담을 듣곤했습니다.
- 단점은 생각을 많이 하는 성격입니다. 그때문에 무슨 일이 있기 전 혼자 시뮬레이션을 돌리고 준비하는 편인데,이것이 과하다고 생각할 경우, 불안 할 땐 그냥 해라! 라는 말을 생각하며 준비한 걸 토대로 부딪혀 도전하려고 노력하고 있습니다.
"개발자로서의 본인의 비전은?"
-아직은 개발자로서의 비전을 말하기 어려운 단계인 거 같습니다. 하지만 저는 이 분야가 너무 재미있고 성장하고 싶은 마음이 간절합니다.
좋은 멘토와 팀 그리고 저의 동기와 노력이 잘 어우러진다면 앞으로 훨씬 생산적이고 훌륭한 개발자가 되지 않을까 합니다.
"개발자가 되기 위해서 어떻게 공부하였는가"
- 막연히 개발자가 되고싶다는 생각으로 찾아보니 개발자양성 국비지원교육이 있다는것을 알게되었고, 거기서 개발자가 되기위한 기초 역량을 쌓을 수 있었습니다. 여러 정보들을 검색하고 배운 것을 기록하며 성장을 위해 노력하고있습니다.
"학습시 주로 이용하는 웹페이지나, 동영상 강좌 페이지는 어디인가"
- 구글검색, 생활코딩, 자바의정석, w3school등을 보며 공부했습니다.
"최근의 읽은 개발 관련 서적은 무엇인가" / "요즘 혹시 공부 하고있는 최신기술이 있는가?"
- 기존의 배움에 내실을 다지는 것이 중요하다 여겨, 최근 이것이자바다라는 서적을 다시 보며 공부하고 있습니다.
"즐겨 보는 개발 관련 유튜브가 있는가"
- 생활코딩,애플코딩, 코딩알려주는누나,노마드코더 등 가리지않고 유명한 개발관련영상을 즐겨 보고있습니다.
"비전공자로써 갖고 있는 컴플렉스가 있는가"
- 비전공자로 가지는 컴플렉스는 없습니다. 비전공자라 더 열심히 공부 해야 겠다는 생각이 듭니다.
"운영체제같은 컴퓨터공학(cs)에 대한 기초지식이 있는가"
- 운영체제 관련해 글을 읽긴 했으나, 누구에게 설명 할 만큼 알지는 못하는 것 같습니다.
"최근에 관심갖거나 공부 하고 싶은 개발 기술은 무엇인가"
- 웹 개발로 역량을 더 키우고 싶지만 가까운 시일에 react-native와 같은 모바일 툴도 사용하고 싶습니다.
"코딩에서 어떤 부분이 당신을 설레게 합니까? (일에 대한 열정)"
- 코딩으로 누군가가 사용할지도 모르는 서비스를 구현한다는 게 너무 즐겁습니다.
“실천하고 있는 열정 프로젝트가 있습니까?” (꾸준한 자기 계발)
- 블로그에 개발자가 되기 위해 한 공부를 꾸준히 작성하고 있습니다.
"회사 기술 스택에 맞추어 단기간 내에 언어와 프레임워크를 학습해야 할 때, 어떻게 공부하고 해결할 것인가"
- 인프런이나, 유튜브를 통해 인터넷 강의를 보며 토이프로젝트라도 따라하면서 익힐것같습니다.
커뮤니케이션
동료와 협업 시 갈등이 생겼을 때 해결하는 방법은? (소통능력)
- 회의를 통해 모두가 명확하게 문제에 대해 인지했는지 어떤 부분에서 오해를 했는지 정확히 의견을 나눠 확인하고,함께 풀어가야할 방향성을 다시 확인하고 업무를 진행하려 합니다.
"IT가 아닌 다른 업무를 맡은 동료와 효과적으로 커뮤니케이션 할수있다고 생각합니까? "
- 저는 제가 모르는 부분을 알게 되는 걸 감사히 여기고 남이 모르는 부분을 알려주는 것에 뿌듯함을 느끼는 성격이라 효과적으로 커뮤니케이션을 할 수 있다고 생각합니다.
- 디자이너로 일했던 경험으로 디자이너와 커뮤니케이션도 보다 수월할 것 같다고 생각합니다.
회사 관련
우리 회사 뭐하는 회사인지 아느냐?라는 질문을 할 경우
- 조사를 꼭 하고 회사에 대한 정보를 얘기 한 후, 더 자세히 알고싶다고 말하기
“왜 우리 회사에서 일하고 싶습니까?”
- (조사하기!!) 연혁을보고 여러 큰 프로젝트를 하신 것을 보고 이곳에서 배우고싶다 라는 생각을 하게되어 지원했습니다.
스타트업에 대해 어떻게 생각하시나요? (스타트업일 경우)
- 스타트업 : 기술 중심의 이제 막 시작한 기업
- 아무래도 프로세스가 구축되지 않은 곳이 더러 있기때문에 어려움을 느낄 수 있으나 그로인해 스스로 배우며 자생력이 길러진다고생각합니다. 다양한 기회가 많을 수있어, 자기 주도적으로 성장하는 점도 좋다고 생각하기 때문에 회사와 함께 커가는 성취감과 재미를 느낄 수있다고 생각합니다.
벤처기업에 대해 어떻게 생각하시나요? (벤처기업일 경우)
- 벤처기업 : 첨단 기술과 아이디어를 가진 사업자가 높은 기대수익을 확신하고 아무것도 시작하지 않은 새로운 사업을 위해 설립하는 기업 (스타트업 보다 규모가 큼)
- 도전 정신과, 신념, 새로운 것에 대한 모험정신을 배울 수 있다고 생각합니다.
“당신이 생각하는 이상적인 개발 환경이란 무엇입니까?” (최선을 다해 일하는 데 어떤 조건이 필요한가?)
- 자유롭게 코딩할 조용한 공간과 의욕, 열정만 있다면 어디든 좋지 않을까 싶습니다!
입사 후 하고 싶은 업무?
-다양한 일을 경험하는 것이 중요하다고 생각합니다. 신입이기에, 주시는 일이 작은 일 이어도 제가 배움을 얻을 수 있는 일일 것입니다. 어떤 일이든 적극적이고 즐거운 마음으로 임할 것 입니다.
“우리에게 궁금한 점이 있습니까?”
- 혹시 업무프로세스가 어떻게 되는지 여쭤봐도 될까요?
- 시간이 괜찮으시다면 아까 제가 잘 대답하지 못했던 질문(기술면접때)에 대해서 혹시 올바른 설명을 들을 수 있을까요?
- 팀의 규모는 어떻게 되나요?
- 실례가 되지 않는다면 기존 개발자 분들의 경력이 얼마나 되는지 좀 여쭤봐도 될까요?
- 제가 입사하게 된다면 저의 포지션과, 보통 어떤 프로젝트를 하게 될까요?
- (내가 한 질문이 많았고, 긴 시간을 소요했다면) 유익한 시간 감사했습니다. 많이 알려주셔서 감사합니다.
기억 안나는 질문할 때
-이것에 대해 개인적으로 좀 헷갈려 재차 찾아본 기억이 있었는데, 조금 더 익히고 공부하는 과정이 필요했었나봅니다.
기회가 된다면 다음엔 자세히 설명드릴 수 있도록 공부해오도록 하겠습니다!
날카로운 질문을 할 때
-굉장히 좋은 질문 감사합니다. 그부분에 대해선 제가 생각을 하지 못했지만, 제가 생각 할 때에는…
(기죽지 말고 이렇게 배웠다, 이렇게 생각한다 대답하기)
정리 참고 출처 : OKKY - 신입 면접 예상 질문 정리해봤습니다.
https://minchoi0912.tistory.com/93
'STUDY > for Developer' 카테고리의 다른 글
[Apache Axis] Apache Axis2란? (0) | 2022.12.21 |
---|---|
[IT] D드라이브 생성 - 파티션 나누기 (0) | 2022.12.19 |
[CODEPEN] 코드펜 소스코드 티스토리 글에 삽입하는 방법 (0) | 2022.10.14 |
[IT] 개발 공부 유용한 사이트 모음 (0) | 2022.09.27 |
[IT] 개발 기획·설계 - IA시나리오 플로우차트 다이어그램 스토리보드 (0) | 2022.08.02 |