마지막 수업과정으로 flutter를 들었었고 앱개발에도 관심이 생겨서 안드로이드 개발 관련 직무에도 이력서를 넣었는데 면접 제의 연락이 와서 면접을 보고왔다. 다 기억나진 않지만.. 최대한 기억나는걸로 적어보자면..(면접 볼때 노트를 들고 다니고 싶다 ㅜㅜ.. 경력있으신 개발자분이 해주는 cs관련얘기도 자세히 적고 싶은데 ..)
1. 인성면접
- 어떤 회사인지 알아보고 왔는지? 우리 회사가 뭐하는 회사인지?
- 회사 다닌 기간이 조금 짧은데 왜 그런지? 그리고 공백기가 있는데 그동안 뭐했는지?
- 개발을 하려고 한 계기 및 직종을 바꾼 이유?
- 학원에서 해당 개발과정을 선택한 이유는?
- 전공자와 비교했을 때 나를 뽑아야하는 이유가 있는지?
- 문제해결 과정을 중요시 한다고 했는데 어떻게 해결하는지?
- 개발자로서 가장 중요하게 생각하는 점은?
- 개발은 적성에 맞다고 생각하는지?
- 팀 프로젝트를 진행하면서 어려웠던 점?
- 플젝하면서 개발부분에서 어려웠던 점 그리고 어떻게 해결했는지?
- 지금 따로 어떻게 공부를 하고있는지?(이런 뉘앙스 : 학원 안다니는 지금은 어떻게 스스로를 발전시키고 있는지에 대한 질문) --> 수치화 하는 것을 좋아하기 때문에 그냥 공부한다, 구글링 하면서 보고 있다 말고 구체적으로 어떻게 공부를 하고 있는지 해당 부분이 부족해서 이 부분을 채우려고 이것을 하고 있다 이런식으로 자세한 답변을 원하시는 것 같았다.
- 우리는 코틀린을 사용하는데 이런 부분은 괜찮은지?
2. cs면접
- GC가 무엇인지? 그리고 JAVA에서는 GC가 자동으로 관리해주는데 이때의 단점은?
--> 동적으로 할당한 메모리 영역중 개발자가 사용하지 않는 것을 없애주는 역할
--> 단점1 : 추가적인 CPU, 메모리 자원을 사용하기 때문에 오버헤드(어떤 처리를 하기 위한 비용,메모리)가 발생함
--> 단점2 : 삭제되는 시점을 알 수 없고 모든 작업이 일시적으로 멈추는 stop-the-world 현상 발생할 수 있음
- 인터페이스와 추상클래스의 차이는?
인터페이스
- java 8부터 default(기본메서드같은), static 메서드 정의 가능
- java 9부터는 private 사용 가능
- 필드는 public static final 상수만 선언 가능 하고 생성자 정의 불가능함
추상 클래스
- 단일 상속만 가능하다
- public, private 등 접근제어자 자유롭게 사용 가능함
- 필드 선언 가능하고 생성자 정의 가능
- default
- 오버라이드 해도 되고 안해도 된다
- 외부에서 객체를 통해 호출이 가능하다.
- public void~ 이런식이 아니라 default로 선언해야 기본메서드 역할을 한다.
- static
- 오버라이드 불가능
- 외부에서 인터페이스 이름명으로 메서드를 호출할 수 있음 (오버라이드가 안되기때문에 지정된 함수로만 사용이 가능)
- Java 9 이후에 추가된 private
- 공통 로직 분리용으로 인터페이스 내에서 사용하게 된다.
- private 메서드가 포함된 default 메서드는 오버라이드는 가능하지만 그 안의 private 메서드는 사용할 수 없음
- 아니면 오버라이드 없이 default 메서드만 호출해서 사용하는 방법이 있음( 그러면 private 메서드 사용 가능)
- private는 당연하게도 상속, 오버라이드 다 안됨 인터페이스 내에서 로직 정리용으로 사용하는 것
## 근데 다중상속이고 상속받은 각각의 인터페이스 안의 메서드가 같은 이름일때, 오버라이드를 하지 않았다?
- 컴파일 에러 발생. 구현 클래스는 반드시 해당 메서드를 오버라이드 해야 한다.
- 오버라이드한 메서드 안에서 특정 인터페이스의 구현을 사용하려면 인터페이스이름.super.메서드이름() 으로 명시적으로 지정해주어야 한다.
- 싱글톤을 사용하면 개방폐쇄의 원칙에 어긋난다고 했는데 이것을 해결할 수 있는 방안은?
--> 인터페이스를 사용한다. 인터페이스를 만들어서 상속한 후에 그 안에서 싱글톤을 만들기
- 상속을 많이 사용하면 안좋은 점은?
--> 상속을 타고 타고 타고 했을 때 만약 중간에서 꼬여버리면 전체 코드가 다 망가져버린다는 단점.. 그리고 결합도가 너무 높아져서 안좋음. 서로의 코드에 너무 많이 의존하게 된다.
- SOLID의 원칙이 무엇인지 말할 것
--> 개방폐쇄, 단일책임, 리스코프치환, 인터페이스 분리, 의존 역전
- 클래스와 클래스끼리 결합도가 높아지면 그걸 낮추는 방법은?
--> 인터페이스를 사용해서 결합도를 낮춘다.
- stringbuilder, stringbuffer의 차이는?
--> builder는 빠르지만 여러 스레드에서 사용할 땐 안전하지 않음, buffer는 반대
기억나는대로 더 추가할 예정인데.. 우선 현재 기억나는건 이정도..?
인성 질문도 그렇지만 cs 질문은 받으면 아는건데도 더더욱 머리가 하얘진다..
공적인 언어로 말해야 되다 보니까 더 깊게 생각한다고 그런 것도 있지만 가장 중요한건 툭 치면 툭 나올 수 있도록 반복 또 반복 그리고 계속적인 공부가 더 필요하다는 것을 느꼈다.
분명 알았던 것도 한동안 안보면 까먹는게 사람이기 때문에 면접이 아니라도 습관적인 공부가 필요하다.
뭔가를 모르는 건 더 배울 수 있어서 좋지만 그냥 많이 아는 사람이 되고싶다. 10년뒤에 나도 누군가에게 설명할 수 있고 면접을 봐줄 수 있을 정도의 지식과 개발실력을 가질 수 있도록 노력해야겠다고 생각했다.
면접을 봐주신 개발자분들이 잘 알고 계셔서 모르는 부분을 자세히 알게되었고 더 깊게 파볼 수 있었다.
'면접후기' 카테고리의 다른 글
[면접후기] GIS 개발회사 2차 면접 후기 (0) | 2025.04.19 |
---|---|
[면접후기] 스타트업 (타입스크립트) 개발회사 면접 (0) | 2025.04.17 |
[면접후기] GIS 개발 회사 면접 후기 (0) | 2025.04.17 |
[면접후기] 유통회사 내 개발부서 회사 면접 (0) | 2025.04.17 |
[면접후기] 정보보안 회사에 대한 인성면접 (0) | 2025.04.01 |