본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

Personal/Employment

신입개발자 면접질문 - 서술형

최근에 읽은 기술 관련 책 이름이 무엇이고 인상깊었던 부분?

Do it! 안드로이드 앱 프로그래밍
앱개발을 위한 기본개념부터 레이아웃, UI를 직접 구현해보며
앱개발에 필요한 다양한 영역을 종합적으로 이해할 수 있었습니다.


본인이 사용했던 기술들과 그 기술을 사용했던 이유?

SOPANG에 사용된 기술을 말씀드리겠습니다.
Eclipse는 Java 개발에 특화된 IDE로 다양한 플러그인과 디버깅기능을 제공합니다. 
Oracle RDBMS는 안정적이고 강력한 관계형 데이터베이스 관리시스템입니다. 기업환경에서 널리사용되고있고 데이터베이스 관련 작업에 필요한 기능과 도구를 제공합니다.
Apache Tomcat은 경량화된 웹애플리케이션 서버로써 Java 웹애플리케이션을 실행 할 수 있는 환경을 제공합니다. 
Maven은 프로젝트 빌드, 종속성관리, 배포를 자동화하는 빌드 도구입니다. 편리한 프로젝트 관리와 의존성 관리를 위해 사용되었습니다.
Spring, MyBatis, Tiles는 의존성주입과 모듈화를 위해, SQL를 별도로 XML파일에 분리에 관리하기위해, 페이지의 공통 레이아웃을 관리하기 위해 사용했습니다.
위 기술들은 프로젝트의 개발 효율성과 유지보수성을 높여주는 역할을 합니다.


하나의 비즈니스로직을 작성할때 어느수준으로 작성하는지, 무엇을 중요하게 생각하는지?

하나의 비즈니스 로직을 작성할때, 
단일책임원칙, 비즈니스로직이 하나의 목적 또는 책임을 갖도록 작성되며
모듈화와 재사용성, 모듈화된 비즈니스 로직이 필요한 경우 재사용할 수 있도록하며
의존성관리, 의존하는 객체나 라이브러리에 대한 관리로 의존성을 적절히 주입하고 인터페이스를 사용해 유연성을 확보합니다.
예외처리, 프로그램의 안전성과 오류를 위해 예기치않은 상황에 대처하고 로그를 기록해 문제해결을 용이하게 합니다.
가독성과 문서화, 비즈니스 로직은 가독성이 높아야 하며 주석이나 문서화를 통해 코드의 의도와 기능을 명확히 설명해야합니다.
이러한 요소들은 비즈니스 로직의 품직과 유지보수성에 중요한 영향을 미칩니다.


신규기술을 도입해본사레?

람다표현식입니다.
람다표현식을 사용하면 불필요한 인터페이스 구현이나 익명 클래스 작성을 줄여 간결하고 읽기 쉬운 코드를 작성 할 수 있습니다. 


초당 100만개씩 들어오는 요청에대해 10000번째로 들어온 요청의 사용자를 어떻게 찾을 것인가?

여러방법이 있습니다.
첫째로, 요청이 순차적으로 저장되는 큐와 같은 데이터구조를 사용하여 요청을 10000번째 요청을 찾을때까지 저장합니다.
둘째로 10000번째 까지 요청이 들어올떄마다 카운터를 증가시켜 
사용자를 확인 할 수 있습니다.
셋째로 초당 100만개의 요청은 매우 큰 규모임으로 여러대의 서버에 요청을 분산하여 각서버에서 자체적으로 요청의 수를 카운팅하도록 합니다. 10000번쨰 요청을 찾을 떄까지 서버간 통신을 통해 요청수를 확인하여 사용자를 확인합니다.


프로젝트를 진행하면서 어려웠던 점은? / 트러블슈팅경험?

프로젝트를 진행하면서 어려웠던 점 중 하나는 NULL SQL 오류를 지속적으로 접했던 경험입니다.
이를 해결하기 위해 데이터베이스 설계시 NULL값을 허용할 필드와 허용하지 않을 필드를 명확히 구분하고, 쿼리실행전 디버깅모드로 데이터를 확인해보며 주의를 기울였습니다.

 

앞으로 쌓거나 경험하고 싶은 개발자 커리어가 있나요?

현재도, 앞으로도 기술을 빠르게 진화하고 발전하기 때문에 새로운 기술과 도구에 대한 학습과 이해가 필요하다고 생각합니다.
최신트랜드나 주요기술에 대해 이해하고 심층적인 기술 이해를 통해 전문성을 향상시키고자합니다.
프로젝트의 성공과 안전성을 위해 소프트웨어 아키텍처 설계의 중요성이 커지고 있습니다. 대규모 애플리케이션 아키텍처 설계와 관련된 경험을 쌓고싶으며 효율적이고 확장 가능한 소프트웨어 시스템을 구축하는 역할을 경험해보고싶습니다.
개발자로서 뿐만 아니라 팀내에서 역할을 수행하고 효과적인 협업을 이끌어내는 능력과 성과를 극대화할 수 있는 스킬을 향상시키고싶습니다.
개발자로서의 고객의 요구와 니즈를 이해하고 그에 맞는 솔루션을 설명할 수있는 능력을 갖추고싶습니다. 사용자 경험에 대한 이해와 디자인적인 요소에 관심이 갖고, 고객과의 소통방법과 더 나은 소프트웨어 제품을 개발하는데 집중해보고 싶습니다.
다방면의 커리어 목표를 향해 학습과 경험을 쌓으며 지속적인 성장을 이루고싶습니다. 또한 주도적으로 새로운 프로젝트에 도전하고 다양한 역할을 수행하며 전문성을 넓혀가는 것이 저의 개발자 커리어의 핵심입니다.