이직하려는 이유는 무엇인가
정렬 알고리즘 알고 있는 것을 모두 말해주세요.
퀵소트를 말하셨는데, 퀵소트 알고리즘에 대해서 자세하게 설명해주세요.
프로세스와 스레드의 차이는 무엇입니까, 프로세스는 어떠한 영역을 공유하고 스레드는 어떤 영역을 공유할 수 있는지 자세하게 설명해주세요.
프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하지만 스레드는 다른 스레드와 공간과 자원을 공유하여 사용하는 차이가 있습니다. 프로세스는 코드, 데이터, 스택, 힙 영역을 고유하게 가지고 있으며 스레드는 코드, 데이터, 힙 영역을 공유할 수 있습니다.
디자인 패턴에 대해서 알고 있는 것을 모두 말해주세요.
singleton, builder, composite, strategy, adapter, facade 답변
각각 자세하게 설명해주세요.
말씀하신 것 중 singleton 은 논란이 있는 부분이 있는데요. 어떤 부분인지 아시나요?
https://stackoverflow.com/questions/11165852/java-singleton-and-synchronization
멀티스레드 환경에서 문제가 있고, synchronized 를 이용하면 해결되지만 비용이 비싼 측면이 있어
지연 초기화를 통한 Holder 를 이용하는 방법이 있습니다.
자신을 UI Driven 인지 Data Driven 엔지니어인지 어느쪽에 가깝다고 생각하시나요?
UI Driven 에 가깝다고 생각합니다.
객체지향의 4대 특징이 무엇인가요?
추상화, 캡슐화, 상속성, 다형성
각각을 자세한 예를 들어서 설명해주실 수 있나요?
추상화란 복잡한 현실의 문제를 공통적인 특징을 뽑아서 그룹화 하는 것을 의미합니다. (클래스)
캡슐화란 사용 방법만을 알려주고 내부 구조는 숨겨서 데이터를 보호하는 것을 의미합니다. (추상 클래스, 인터페이스)
상속성은 부모의 기능을 자식이 물려받는 것을 의미합니다.
다형성은 하나의 메소드나 클래스가 이걸 이용하는 방법에 따라서 다양한 방법으로 동작하는 것을 의미합니다.
(인스턴스 생성 후 부모 메소드로 사용하는 경우와 자식 메소드로 사용하는 경우를 예를 듬)
인텐트 등의 프로세스 간의 통신이 아닌 앱 내부적으로 이벤트를 받았을 때, 업데이트 하는 방법에는 무엇이 있나요?
백그라운드 작업을 할 때 안드로이드에서는 어떤 방법을 이용할 수 있나요?
Handler, AsyncTask 설명
Activity class 를 이용해서 바로 백그라운드 스레드를 돌릴 수 있는 방법?
기억이 안나서 대답을 못 했는데 runOnUIThread 라고 말해줌
다이나믹 프로그래밍이란 무엇인가?
동적할당법을 피보나치를 예를 들어서 설명했는데, 다이나믹 프로그래밍의 다른 의미를 물어본듯..
정확히 어떤 것을 이야기 했는지 모르겠음
오버로딩과 오버라이딩의 차이점은 무엇인가요?
자바와 자바스크립트 외에는 어떤 언어를 할 줄 아는가?
요즘 관심 있는 언어나 분야는 어떤 부분인가?
GitHub 사용하는지?
GitHub 를 통해서 다른 프로젝트를 진행 중인 것이 있는가?
LG는 현재 프로젝트를 Kotlin 으로 변경하여 진행할 예정이 있는가?