본문 바로가기

신입 개발자 면접 기초

(30)
개발자 기술 과제, 라이브 코딩 테스트 후기(자바 스트림 활용 능력 with flatMap) 과제 겸 라이브 코딩 1. 후기 제가 생각하는 일반적인 개발자 채용 프로세스는 아래와 같습니다. 서류전형 → 코딩테스트(온라인) → 기술면접 → 임원면접 → 최종합격 여기에 조금 추가되면 코딩테스트를 여러번 본다든지 오프라인 코딩테스트를 한 번 더 본다든지하는 경우가 있습니다. 또한 경우에 따라 기술 면접 전에 필기 문제를 푸는 경우도 있고, 코딩테스트 대신 과제 전형이나 기술 면접 중 수도코드 작성, 아주 드물게 기술 면접 단계에서 라이브 코딩을 할 수도 있죠. 그러한 여러 과정 중 제가 이번에 "라이브 코딩"을 봐서 후기를 남기려고 합니다. 조쉬 롱(josh long)만큼 라이브 코딩을 할 수 있다면 두려울 것이 없겠지만 제 현실은 나약한 주니어 개발자죠.... 그래도 나름 깨달은 것이 있어서 공유하..
자바 람다에서 final이거나 final처럼 쓰인 지역 변수만 접근할 수 있는 이유 Java lambda effectively final local variable 1. 자바 람다에서 final이거나 final처럼 쓰인 지역 변수에만 접근할 수 있는 이유 면접에서 또 하나 배워왔습니다. (기술 면접에서 떨어졌지만...ㅜㅜ) 먼저 질문부터 말씀드리면 원래 질문은 "Anonymous Inner Class에서 외부의 지역 변수에 접근할 때 final처럼 쓰여야만 가능한데 왜 그렇게 동작하는지에 대해 자유롭게 답을 해보라"는 질문이었습니다. 답변은 제대로 못했는데 나름대로 생각하기를 뭔가 동시성 문제가 있지 않을까?하고 단순하게 이정도만 생각하고 답변했던 것 같습니다. (근거도 없이...) (물론 final 키워드로 지정된 변수는 재할당을 못하게 할뿐이지 동시성 문제를 해결하는 키워드는 아닙니..
Virtual DOM 동작 원리와 이해 (with 브라우저의 렌더링 과정) Virtual DOM? 1. Virtual DOM이란? → "DOM을 추상화한 가상의 객체" DOM을 추상화한 가상의 객체라고 표현해봤습니다. (개인이 내린 정의) 그러면 우선 저 문장을 이해하기 위해서 DOM이란 뭔지 알아야합니다. 1.1 DOM(Document Object Model) DOM은 문서 객체 모델이라고 하는데 결국은 브라우저에서 다룰 HTML 문서를 파싱하여 "문서의 구성요소들을 객체로 구조화하여 나타낸 것"입니다. DOM은 HTML Elements, Attributes, CSS styles, Events, Methods 등을 제어할 수 있는 표준 인터페이스를 제공합니다. 단순하고 실용적인 측면에서 다시 정의하면 "웹 페이지를 구성하는 요소를 구조화해서 나타낸 객체고 이 객체를 이용해서 ..
자바8이후 인터페이스의 변경점 2가지와 변경한 이유(default method, static method) Java Interface (JDK8~) 1. 자바 인터페이스 변경점 자바 8에서 대대적인 변화중 하나인 인터페이스에 변경점이 있습니다. 과거에는 인터페이스와 추상클래스의 차이점에 대한 질문이 면접에 가끔 등장했으나, 요새는 인터페이스의 변경점으로 인해 인터페이스에 대해 물어보는 질문이 더 자주 등장하는 것 같습니다. (자바8은 2014년에 나왔고, 현재 2020년에는 JDK14가 나왔는데 뒤늦게 뭔 자바8이야? 라고 하실 수 있지만, 결국 해당 변경점이 어떤 문제를 해결하기 위한 변경 혹은 기술인지 이해하고 사용하는게 중요하기 때문에 공부한 내용을 정리했습니다.) 각설하고... 자바 인터페이스의 변경점은 두 가지가 있습니다. Default Method Static Method 기존(자바7 이전)에는 추..
RESTful에 대해서 설명해주세요.(REST, RESTful, RESTful API 개념 정리) REST가 뭐에요? RESTful에 대해서 설명해주세요. REST가 무엇인가?REST는 분산 시스템 설계를 위한 아키텍처 스타일이다.아키텍처 스타일이라는건 쉽게 말하면 제약 조건의 집합이라고 보면 된다.RESTful은 무엇인가?RESTful은 위의 제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족하는 것을 의미한다.REST라는 아키텍처 스타일이 있는거고 RESTful API라는 말은 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻이다.우리가 REST와 RESTful을 동일한 의미로 사용하곤 하는데 엄격하게는 다르다는 것을 알 수 있다.->이로써 REST와 RESTful, RESTful API가 무엇인지, 어떻게 다른지를 말할 수 있게 되었다.REST가 필요한 이유는 뭘까?1. 위에서 ..
메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven) 메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? 제목과 같은 질문에 필자는 제대로 답변할 수 없었다.단순하게는 maven repository에서 dependency 추가해서 필요한 라이브러리 쓰는 정도?무엇을 위해 쓰는지, 왜 쓰는지, 어떻게 쓰는지에 대한 구체적으로 알지 못했다. 사실 지금까지 알 필요도 없었고, 초보 프로그래머의 기준에서는 Maven을 몰라도 대중적이면서도 다양한 라이브러리를 많이 접하고 써보면 "장땡"이었기 때문이었다.사실 지금도 자세히는 모른다.그러나, 조금 더 나은 프로그래머가 되기 위해서 maven에 대한 이해가 필요하다고 생각해서 정리한 것이다. ("maven을 빠삭하게 알아야 해!"가 아니라 "maven을 알아가는 길에 한 발자국을 떼보자!"다.)pom.xml을 ..
웹애플리케이션 서비스가 아닌 웹서비스(WebService), WSDL을 아시나요? (WSDL 문법, 구조, 구문 분석) 웹서비스(WebService)는 무엇인가? * 꽤나 오래된 기술이라서 쉽게 변화하기 힘들거나 변화에 보수적이고 오래전 부터 해왔던 업계에 적용되어 사용되고 있다. (일반적인 소프트웨어 회사에 가는 사람들은 굳이 볼 필요가 없다.)위키백과에 의하면 '네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템' 이라고 한다. (상호작용을 위해서는 프로토콜이 필요하다는 것은 예상가능하다.)웹서비스는 웹 애플리케이션 서비스와 다르다.웹서비스는 쉽게 설명하기 위해 비약을 하면 API 서버와 유사하다.어떠한 애플리케이션이든 API서버는 "지정된 올바른 요청"을 하면 그에 해당하는 "답변"을 준다.마찬가지로 웹서비스는 애플리케이션들이 플랫폼과 프로그래밍 언어와는 독립된 방식으로 통신할 수..
JVM 구조와 자바 런타임 메모리 구조 (자바 애플리케이션이 실행될 때 JVM에서 일어나는 일, 과정을 설명해줄 수 있나요?) JVM(Java Virtual Machine) : 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체다.CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다.즉, 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다.JVM의 구성을 살펴보면 크게 4가지(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area)로 나뉜다.1. Class Loader자바에서 소스를 작성하면 Person.java 처럼 .java파일이 생성된다. .java 소스를 자바컴파일러가 컴파일하면 Person.class 같은 .class파일(바이트코드)이 생성..