본문 바로가기

IT/Teckweek32

www.도메인.com 을 치면 일어나는 일 면접 단골 질문이다. 사실 몰랐었지만 (..) 면접 스터디를 하면서 알게 되었고, 실제로 내가 진행했던 몇 회사의 필기 테스트에서도 비슷한 문제를 본 경험이 있다. 서버와 클라이언트 측면에서 설명할 수 있는 것이 좋다. IP 주소란? 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. IP 주소를 줄여서 IP라고 부르기도 하지만 IP는 인터넷 규약 자체를 가리키는 말이기 때문에 엄밀하게는 구별해야 한다. 요즘 사용되는 IP 주소는 *IPv4지만 주소가 부족해짐에 따라 IPv6 주소가 널리 사용되고 있다. *IPv4는 오늘날 일반적으로 사용하는 IP 주소이다. 범위는 32비트로 0 ~ 255 사이의 십진수 넷을 쓰고 .으로 구분하여 나타낸다. 따라서 0.0.0.0 ~.. 2020. 11. 22.
싱글톤 패턴 (Singleton Pattern) 이전에 게임 개발을 하면서, 싱글톤 패턴을 사용하여 개발한 적이 있다. 기본 Base Class를 모든 객체들이 갖고있고, 그 객체로 전체 게임을 컨트롤 할 수 있게끔 만들었는데 (Game Controller로 사용함) 막연하게 하나의 객체를 모든 객체들이 갖고있다. 라는 점만 무의식 중에 알고있어서, 명확한 정의를 알지 못해서 면접 준비를 하면서 정리된 말로 답할 수 없던 개념중에 하나이다. 아무튼 그렇다보니 한 번쯤 짚고 넘어갈 필요가 있어보여서 정리해본다. 싱글톤 패턴! 싱글톤 패턴이란? 단 하나의 객체를 생성하고, 생성된 객체를 어디서든 참조할 수 있도록 하는 패턴. 여기서 주의할 점은 클래스를 static(전역 변수)으로 선언하는 것이 아닌, 동적으로 생성하고 heap 영역에서 GC로 관리하도록.. 2020. 10. 26.
얕은 복사와 깊은 복사 오늘은 얕은 복사와 깊은 복사에 대해 알아보려한다. C++과 Java를 사용해왔기 때문에, 즉 객체지향 언어들을 사용해왔기 때문에 항상 주의해야하던 부분이기도 하다. 각각의 언어의 얕은 복사와 깊은 복사, 그리고 그 의미에 대해 알아보자. 얕은 복사(Shallow Copy)란? 간단히 말해서 동일한 클래스의 객체를 만들어서, 기존 객체가 가리키고 있는 지점을 동시에 가르키도록 만드는 것이다. (얕은 복사된 객체와, 원본 객체는 동일한 메모리 공간을 참조하고 있는 것이다) 일반적으로 객체를 복사할 때, 동일한 클래스의 새 인스턴스를 만들고, 모든 필드(변수/함수)들을 새 인스턴스에 복사하고 반환하게 된다. 이것은 얕은 복사에 해당한다. 자바에서는 Clone 함수를 사용하게 되면 얕은 복사가 일어난다. 얕은.. 2020. 10. 19.
최단 경로 문제 최단 경로 문제란? 그래프에서 최단 경로 문제는 두 노드를 잇는 가장 짧은 경로를 찾는 문제이다. 일반적으로 가중치가 있는 그래프에서는 간선의 가중치 합이 최소가 되도록 하는 문제이다. 단일-출발(single-source) 최단 경로 단일 꼭짓점 v에서 출발하여 그래프 내의 다른 꼭짓점들에 도착하는 가장 짧은 경로를 찾는 문제 단일-도착(single-destination) 최단 경로 문제 모든 꼭짓점들로부터 출발하여 그래프 내의 단일 꼭짓점 v로 도착하는 가장 짧은 경로를 찾는 문제 단일 쌍(single-pair) 최단 경로 문제 주어진 꼭짓점 u와 v에 대해 u에서 v까지의 최단 경로를 찾는 문제 전체-쌍(all-pair) 최단 경로 문제 그래프 내의 모든 꼭짓점 쌍들 사이의 최단 경로를 찾는 문제이다.. 2020. 10. 12.
객체지향 프로그래밍이란? 이미지에서 알 수 있듯이, 절차지향 언어는 출금, 입금, 송금이라는 '기능(function)'에 중점을 둔다면 객체지향 언어는 손님, 돈, 계좌라는 '객체(Object)'에 중점을 두고 있다. 객체지향 프로그래밍(Object-Oriented Programming) 객체지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나로 프로그래밍 로직을 객체로 만들어 나가는 것을 의미한다. 여기에서 객체란 하나의 역할을 수행하는 메소드와 변수의 묶음을 의미한다. 대표적 언어로는 C++, C#, Java 등이 있다. 절차지향 프로그래밍 (Procedural-Oriented Programming) 절차지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나로 순차적 처리를 중요시 여기는 프로그래밍 기법이다. 일반적으로 컴.. 2020. 10. 5.
안드로이드 액티비티 생명주기 안드로이드와 멀어진 지 너무 오래된 것 같아 오랜만에 정리해보는 시간을 가지려 이 주제를 선택하게 되었다.. 먼저 안드로이드가 무엇인지, 그 구성요소인 컴포넌트들과 그 중 액티비티 생명 주기에 대해 다뤄보려 한다. 안드로이드란? 안드로이드란 간단히 말해 구글에서 만든 스마트폰용 운영체제이다. 운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 등을 포함하고 있는 소프트웨어 스택이자, 모바일 운영체제라고 할 수 있다. 안드로이드는 리눅스(Linux)를 기반으로 제작되었고 Java와 Kotlin으로 응용 프로그램을 작성할 수 있다. 안드로이드 4대 컴포넌트 액티비티, 서비스, 콘텐츠 제공자, 방송 수신자를 의미한다. 이것은 어플리케이션을 만들 때 주요 구성요소이며, 보통 개발 시 이들을 상속받아 .. 2020. 9. 21.
MVC, MVP, MVVM MVC는 모델-뷰-컨트롤러의 줄임말이란 정도가 내가 아는 유일한 사실(?) 이었다. 위의 세 가지 디자인 패턴에 대해 조사하게 된 계기는 얼마 전 Vue, React, Angular의 차이점에 대해 설명을 들으면서 각각의 디자인 패턴과 관련있는 언어가 무엇일까에 대해 듣다가 잘 이해가 가지 않아서 조사해보게 되었다. 디자인 패턴이란? 우리는 개발을 하면서 소프트웨어 공학적 관점에서 좋은 코드를 만들기위해, 좋은 코드 '디자인'을 하기 위해 많은 노력을 한다. 싱글톤, 옵저버 패턴… Java 개발을 하면서 사용해본 디자인 패턴은 이 두 가지 정도가 있지만 명확하게 '디자인 패턴'이 무엇인지를 떠올려본 적은 없다. 누군가의 코드를 따라쓰면서 이런 식으로 하면 효율적이구나, 이런 방식을 싱글톤이라고 하는 구나.. 2020. 8. 15.
SSO란? SSO! 같이 스터디 하시는 분이 인턴하면서 얘기해주신 건데 정말로 처음 들었던 거라, 꽤 신기하기도 하고(실제로 자주쓰는 기능인 거 같기도하고) 한 번 알아보면 좋을 것 같아서 오늘의 주제는 SSO로 정했다. SSO란? Single-Sign On. 싱글 사인 온. 통합 인증. 한 번의 통합 인증으로 여러 컴퓨터 상의 자원을 이용 가능하도록 만든 것이다. 매 사이트마다 새로운 아이디와 비밀번호를 생성하는 것이 아닌 단 한 번의 회원 가입으로 여러 서비스를 사용할 수 있다면? 에서 나온 유저 편의를 위한 인증 방식이다. 간단히 이야기하자면 우리가 익히 알고 있는 기능이다. 사진과 같은 기능을 제공하는 사이트가 있다면, 해당 사이트는 네이버, 카카오, 페이스북, 구글에 SSO 인증을 제공하고 있는 것이다. .. 2020. 8. 2.
SPA란? 저번에 Y언니가 알려준 SPA에 대해서, 그리고 그 단점인 SEO에 대해서 자세히 알아보려고 한다. (그 외에도 스터디 때 알게된 사항에 대해서 본인의 글로 옮겨보는 시간을 ... 틈틈이 가지려고 한다! 사실 너무 많아서 다 할지는 모르겠다) 그리고 찾다보니 알게된 이와 대조되는 MPA의 개념에 대해 간략히 설명해보고 어떠한 차이가 있는지도 알아보자! SPA란? Single Page Application. 단일 페이지로 구성된 웹 어플리케이션으로 주로 CSR를 사용한다. (SPA라고 해서 무조건 CSR이 아니다!) 페이지에 처음 진입 시 모든 데이터를 다운로드한다. 페이지의 리소스를 클릭하더라도 모든 것을 다시 로드하지 않는다. 전통적인 방식에서의 SPA는 서버 사이드 렌더링이 아닌 클라이언트 사이드 렌.. 2020. 8. 2.
SSR과 CSR이란? 저번주에 Y언니가 SPA에 대해서 알려주는 시간이 있었다! 이와 관련된 조금 디테일한 이야기를 하면 좋을 것 같아서 SSR(Server-side Rendering, 서버 사이드 렌더링)과 CSR(Client-side Rendering, 클라이언트 사이드 렌더링)에 대해서 찾아볼까 싶었다. 이미 알고 있던 사실 : 언니가 알려주기 이전에 SPA에 대해서는 잘 몰랐지만 이번에 면접 준비를 하면서 최근 들어 서버 사이드 렌더링에서 클라이언트 사이드 렌더링이 조금 더 유행(?) 한다는 얘기를 들었다. 단어를 처음 들었을 때의 소감은 서버 사이드 렌더링은 말 그대로 서버에서 렌더를 하는 것일테니 마치 검색어를 입력하면 그에 대한 추천검색어를 서버에서 다시 클라이언트에 건네주는 것과 유사한 것일거라 생각했고, 클라.. 2020. 7. 22.