본문 바로가기

기술면접30

TCP, Socket Timeout TCP Timeout TCP는 3 way-handshake로 연결, 이 작업이 수행되는 시간을 Connection Time이라고 한다. 이러한 연결 시간을 지정해야 하는데 이를 Connection Timeout이라고 한다. Socket Timeout 여러 패킷으로 데이터를 나누어 전송하게 된다. 각 패킷 간 시간의 차이가 나게 되는데 이 시간의 임계치를 Socket Timeout이라고 부른다. 두 가지 설정을 하지 않는다면 무한 대기가 될 수도 있다. 2022. 10. 7.
[네트워크] HTTPS에 대해 설명해주세요. HTTP VS HTTPS HTTP → 데이터를 주고 받기 위한 프로토콜 80번 포트 사용 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이다. HTTP의 구조 HTTPS → 데이터 암호화가 추가된 프로토콜 443번 포트 사용 암호화 알고리즘 메시지 다이제스트 메시지 무결성 검사를 위해 암호 해시 함수를 이용해 생성하는 크기가 고정된 값 비 예측성 - 조금만 달라져도 예측할 수 없다. 역상 저항성 충돌 저항성 MD5, SHA-256 대칭키 암호 대칭 키 암호 - 비밀 키라고도 한다. 암호화, 복호화에 같은 키를 사용하는 암호 AES128, AES256-GCM(32byte) 공개키 암호 비대칭 키를 사용 개인키와 공개키가 있어 개인키로 공개 키를 유도 공개 키로 암호화, 개인 키로 복호화한다. 암복호의 .. 2022. 9. 24.
[디자인 패턴] 커맨드 패턴 커맨드 패턴이란? 커맨드 패턴은 실행될 기능을 캡슐화하여 여러 기능이 가능하도록 재사용성이 높은 클래스 설계 패턴이다. 요청을 캡슐화해 호출자와 수신자를 분리하는 패턴 리모컨이 있어 버튼을 선택해야 한다고 가정해본다. 명령은 게임 관련 명령과 불 관련 명령이 있다. Invoker는 Button이 되고, Receiver는 Game, Light가 된다. Command 인터페이스를 선언해 캡슐화한다. public class Button { private Stack commands = new Stack(); public void press(Command command) { command.execute(); commands.push(command); } public void undo() { if(!commands.. 2022. 4. 5.
[디자인 패턴] 전략 패턴 전략 패턴이란? 다양한 전략을 바꿔가며 해결하는 패턴 인터페이스와 위임을 사용해 특정 기능 변경을 할 때 사용하는 패턴 위임으로 IOC(제어의 역전), 인터페이스로 OCP를 만족할 수 있다. 언제 쓰는가? 게임에서 무기를 선택할때 칼,창,도 등급 할인 정책 자바에서 쓰이는 경우 Collections#sort() javax.servlet.http.HttpServlet javax.servlet.Filter#doFilter() 장점 Context의 변경 없이 새 전략을 추가할 수 있다. 확장에 유리한 코드 작성 단점 클래스로 분리한 각 전략들이 어느 상황에 사용되는지 알아야 함. 구체 클래스에선 인터페이스에 있는 메서드를 쓰지 않을 수도 있기에 비효율적일 수 있다. 구현해보기 상황: PM, 개발자, 개발 도구.. 2022. 4. 5.
[디자인 패턴] 싱글톤 패턴 싱글톤 패턴이란 인스턴스를 오직 한 개만 제공하는 클래스이다. 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개일때 문제가 생길 수 있다. 따라서 하나의 인스턴스만 만들어 제공하는 클래스를 만드는 것이 싱글톤 패턴이다. 싱글톤 패턴 구현법 1 - 싱글 스레드 생성자를 private로 만드는 이유 → new로 만들지 않기 위해서 getInstance()를 static으로 만든 이유 → 처음 만들어진 이후엔 null이 아니기 때문에 하나의 인스턴스만 리턴하게 된다. getInstance()가 멀티 쓰레드 환경에서 안전하지 않은 이유 1번, 2번 스레드가 있다. 1번 스레드가 처음 접근할때 null이기 때문에 new를 실행하게 된다. 그런데 거의 동시에 2번 스레드가 접근할때에도 new를 실행하.. 2022. 4. 1.
[디자인 패턴] 프록시 패턴이란? 프록시 패턴이란??? Proxy는 대리자라는 의미를 갖고 있다. 비서를 거쳐 사장과 커뮤니케이션하는 개념 객체 사용을 위해 직접 참조하지 않고, 해당 객체를 바라보는 객체를 생성해 실제 객체의 생성을 미룬다. 프록시 사용 이유는? 객체 지향의 원칙인 OCP(Open-Closed Principle)을 지키기 위해서이다. 자기 자신에 대한 수정에는 열려 있고 외부의 접근에 대해서는 닫혀 있어야 한다는 원칙 프록시 패턴의 장점 객체 생성 전에도 프록시를 통해 참조가 가능하다. 실제 객체의 public, protected를 숨길 수 있다.(인터페이스로 대체) 실제 객체에 대한 사전 처리가 가능하다. 프록시 패턴의 단점 자주 사용될 경우, 가짜 객체가 생성되는 것이기에 성능 저하가 발생할 수 있다. 로직이 복잡해.. 2022. 3. 22.
[운영체제] 메모리 관리 전략 메모리 관리 전략 메모리 관리가 필요한 이유? 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다. 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다. 효율적인 메모리 관리 3가지 동적적재 모든 프로그램을 적재하는것이 아니라 반드시 필요한루틴과 데이터만 적재하는 기법입니다. 루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들 입니다. 동적연결 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법입니다. 스와핑 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법입니다. 잦은 스와핑시에 단점 단편화 잦은 메모리 관리가 일어나면 메모리사이에 틈이 .. 2022. 3. 2.
[운영체제] 동기와 비동기, 블로킹과 논블로킹 동기와 비동기의 차이 동기란? 동시에 일어난다는 뜻입니다. 어떠한 요청을 하였을때 응답(결과)을 한자리에서 동시에 일어난다는 뜻입니다.(한가지 일을 하면 결과가 나올때까지는 다른일은 정지가 된다는 뜻입니다.) 비동기 동시에 일어나지 않는다는 뜻입니다. 어떠한 요청을 하였을때 응답이 한자리에 동시에 일어나지 않아도 된다는 뜻입니다.(한가지일을 마칠동안 다른 일도 실행이 된다는 뜻입니다.) 동기의 장/단점 장점: 설계가 단순(직관)하다.(구성하기 쉽다.) 단점: 효율성이 떨어진다. 비동기의 장/단점 장점: 결과가 나오기까지 시간이 걸리지만 다른 작업을 수행할수 있다. (효율성이 좋다.) 단점: 각각의 일마다 결과시간이 달라서 설계가 복잡하다. 추가적인 궁금한부분 비동기와 병렬의 차이? 비동기는 눈속임으로 동.. 2022. 3. 2.
[운영체제] 외부단편화, 내부단편화 주기억장치 할당 기법 단일 분할 할당 기법 다중 분할 할당 기법 다중 분할 할당 기법 주기억장치에 여러 개의 프로그램 동시 적재 기법 다중 프로그래밍을 위한 기법 고정 분할 할당, 가변 분할 할당 MTF(Multiple contiguous Fixed parTition allocation, 고정 분할 할당) 기법 정적 할당 기법 분할된 메모리(크기 일정)에 배치 한 영역에 한 프로그램 적재 가능 단편화 발생 현재는 안 쓰임 단편화 할당과 반납의 과정에서 사용되지 않고 낭비되는 빈 공간 내부 단편화: 공간이 남는 것 외부 단편화: 공간이 작아서 할당을 못하는 것 분할된 메모리 영역 크기 4k, 프로그램 크기가 5K? 외부 단편화 분할된 메모리 영역 크기 4k, 프로그램 크기 2K? 내부 단편화 MVT(Mul.. 2022. 3. 2.
[운영체제] 가상 메모리 가상 메모리 물리적인 메모리의 크기 한계를 극복하기위한 기술입니다. 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할수 있습니다.(수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법) 가상메모리가 구동하는 아이디어 cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다. 가상메모리는 실제 메모리를 참조한다. 1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다. MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치. 페이징 시스템(Paging System) 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다. Page : 고정.. 2022. 3. 2.
[운영체제] Context switching Context switching 컨텍스트(Context)란? CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들을 말함 이러한 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다. 그렇기 때문에 이전 작업을 PCB에서 불러와서 이어서 하는 작업이 가능하다. 컨텍스트 스위칭(Context Switching)? 프로세스의 정보의 교체??? 멀티프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching 단점 Context Switching 때 해당 CPU는 아무것도 못함. → 그래서 빈번하게 스위칭이 발생하면 오버헤드가 발생해 효율 및 성능이 저하된다. 🚩오버헤드란 ? 오버헤드(overhead)는 어떤 처리를 하기 위해.. 2022. 3. 2.
[데이터베이스] MongoDB DB 생성 및 제거 [도커로 데이터베이스 진입] docker exec -it mongodb /bin/bash mongo [데이터베이스 생성]: use Ex) use testmongo로 데이터베이스를 생성합니다. [현재 데이터베이스 확인]: db [데이터베이스 리스트 확인]: show dbs 데이터가 없다면 나오지 않습니다. 데이터를 하나 넣어보겠습니다. 어라 데이터 삽입이 되지 않습니다. 쉘 접근할때 인증을 해야 된다고 합니다. mongo -u root -p 1234 데이터 삽입이 완료되었습니다. employee는 collection에 해당합니다. db.employee.save({ ename : "김식당", depart : "자재팀", status : "B", height: 177 } ) [Collection 리스트 확인].. 2022. 3. 2.