개발자 채용 과제 도전 및(+) 후기(....)

2021. 10. 12. 11:58개인노트

반응형

최근 협업툴로 알게된 플X우 회사에 지원했었고 서류 합격 후 과제전형을 진행하게되었다. 코딩테스트의 경우는 따로 알고리즘이나 이런부분들을 생각하여 준비를 했었지만 보통 과제의 경우 실무에서 사용되는부분들을 구현하라는 형태가 많기때문에 바로 도전하였다.

기본적인 틀은 아래와 같았다.(참고로 해당회사에서 제공한 문제는 2가지의 형태였다. 설문조사 관련하여 ERD를 구성해보라..+ 파일 확장자를 체크하는 로직을 만들어보라(간략한 화면정의서 및 구현 조건) )

나의 경우에는 파일 확장자 로직 구현을 선택했다.(이전회사에서 근무하면서 커스텀 했던부분들이 존재했기때문에)

주어진 화면의 대략적인 모습은 아래와 같았다.

주어진 사항은 아래와 같았다.

요건

1-1 고정확장자는 차단을 자주하는 확장자 리스트이며, default unCheck되어져있습니다.

1-2 고정 확장자를 check or uncheck 경우 db 저장됩니다. 새로고침 유지되어야합니다.

(아래쪽 커스텀 확장자에는 해당값이 들어가면 안된다)

2-1 확장자 최대 입력길이는 20자리 ()

2-2 추가버튼 클릭시 DB 저장되며, 아래쪽 영역에 표현됩니다.()

 

3-1 커스텀 확장자는 최대 200개까지 추가가 가능 (체크해봐야함 200 제한은 걸어둠)

3-2 확장자 X 클릭시 db에서 삭제한다. (삭제완)

요건외에 어떤점을 고려했는지 적어주세요

Ex) 커스텀 확장자 중복 체크

커스텀확장자 sh 추가한 다시 sh 추가했을 고려하여 개발 같은형태.

 

##내가 진행한 부분##

프로젝트의 구성은 아래와 같이 설정하였고, 로컬환경에서 테스트 후 AWS에서 제공하는 EC2(프리티어), RDS(Mysql), Route53(DNS)를 사용하여 실제 서버를 돌렸다.

스프링부트, Java1.8,Mysql 8.0.23, Tomcat9(내장톰캣)

##내가 고려한사항들##

  1. 확장자에 영어만 가능하도록 정규표현식으로 제한.
  2. 확장자 내용이 없는경우 추가안되도록 제한.
  3. 고정확장자인경우 커스텀확장자에 입력안되도록 제한
  4. 이미 등록된 확장자의 경우 추가 안되도록 제한
  5. 등록 200 갯수제한
  6. 추가버튼+엔터키로도 커스텀 확장자 추가 등록 가능하도록 form태그로 구현. 사용자 편의성을 위해 SPA유지하도록 submit false 제한.
  7. 확장자 테스트 되는지 확인부 추가.

##ERD구성##

1. 그외 기타 사항들의 경우 알아서 가정하여 진행하라고 하였고, 나의 경우에는 고정확장자는 자주 사용되는부분이라 변경사항이 없다는 가정하에 각각 컬럼으로 잡았다. fixExtension1 ~finExtension7그리고 체크박스 변경값을 체크하여 update가 일어나도록 하여 새로고침시에도 적용되도록 하였다.

2. customCode의 경우에는 확장자 제한부분을 최대 200개 까지 추가 할 수 있기때문에 변경가능하도록 customCode에 따라서 다른게 적용되도록 생각하였다.

ex) 150개나 되는 확장자를 추가하였을때 다른커스텀 확장자를 불러오거나 저장되는부분이 가능하도록??  아래2개의 SQL문은 200개가 저장되어있다는 가정하에 서로 다른값을 불러옴.

SELECT * FROM fileconfig where customCode = "ex1";

SELECT * FROM fileconfig where customCode = "ex2";

 

##이후 면접##

과제를 다 수행하여 AWS에 올린 뒤 제출하였더니(1~2일뒤) 면접이 잡혔다. 그리고 어떤생각을 가지고 위 프로젝트를 구성하였는지 부터 다른사람의 방법은 어떤방식이였는지도 들었다.

위 구현과제에서 내가 놓친점은 고정확장자를 컬럼 7개로 잡아서 사용했는데 그럴경우 추가로 고정확장자를 늘리거나 줄여야하는경우 컬럼을 변경하고 수동적인 부분이 필수적으로 들어가버린다는 점이였다.(물론 안변한다는 가정을 하고 진행을 하였지만 실제 업무를 하다가도 안변한다고 주장되는게 변하는게 빈번한데...생각을 잘못했다)

ex)고정확장자 7개 쓸려고했는데 그냥 5개만 해달래요. 라는 형태도 많다...

만약 새로 만든다면 고정확장자인지 체크하는 플래그값을 확인할 컬럼을 추가하여 extension컬럼에 다 넣었을 것 같다. 

ex) fixExtension 'Y','N'값으로 체크되는 컬럼 추가하여 해당값이 Y인경우는 고정확장자이고, N이라면 커스텀확장자로 취급하는형태.

아래는 구현한 깃 주소이다.

https://github.com/helloworldkim/extensiontest

 

GitHub - helloworldkim/extensiontest: 확장자 체크 로직 구현 관련 프로젝트

확장자 체크 로직 구현 관련 프로젝트. Contribute to helloworldkim/extensiontest development by creating an account on GitHub.

github.com

##면접 그 이후##

면접을 보았고 그 결과에 대한 답변을 받았다. 아래와 같이...

면졉결과

음 과제구현을 진행하면서 나름 완성도를 높이고 싶어서 2~3일 가까이 한 회사에 쏟아부었고.. 구현하면서 고민도 했지만 원하는 결과가 아니였고, (현타가 제일 많이왔다...;)

아무래도 과제를 수행하는데 들어가는시간이 있었지만 한번에 결과에 대해 나타나고.. 그게 면접탈락인 경우에는 보상이 없다보니 더 그런것 같다..(예를들어 더 오래걸린다면?? 복잡한 구현요청이 와서 1주~2주 가까이 소요됬다면??)

이후에는 차라리 코딩테스트를 보는곳을 찾아 볼 것 같은 느낌이다..(과제전형을 요청하는 회사는..여기가 마지막일듯하다)

##추가사항##

8~9월로 지정된 채용과제라고 적혀있어서 포스팅을 진행하였고 혹시나 추후에 문제가된다면 요청시에는 해당글을 수정하겠음.

반응형