[CS] 특화프로젝트 기술 질문 정리

두리두두·2023년 6월 7일
0

TIL

목록 보기
4/15

프로젝트 질문

특화프로젝트 팀원들이랑 기술질문 나올법한 것들을 공유하기로 했돠.
답변 레쓰고.

따로 새 글로 정리해야할 것은 태그로 올렸다. 도커와 JPA!!


  1. IPFS 가 무엇이고 왜 쓰신건가요?(대구은행 면접 질문)

  2. 이 프로젝트를 진행함에 있어 왜 블록체인을 쓰신건가요?(대구은행 면접 질문)

    • NFT라는 대체불가능하고 고유성이 인정받아야하는 자산을 다루기 위해서
    • 블록체인 특징 : 투명성, 고유성(?), 등등 때문에 NFT(Non-Fungible Token) 쓰면 내가 이 자산의 주인이라는 것을 보장할 수 있다. 또한 블록체인 네트워크 상에서 안전한 재판매가 가능하기 때문.
  3. Docker를 사용하셨는데 왜 docker를 사용하셨나요?

  • 독립된 개발 환경
  • 개발/운영 환경 통합
  • 배포 신속성 확보
  1. ssafy과정에서 vue를 배우셨던데 왜 react를 사용하셨나요?

  2. 개발을 진행할 때 어려웠던 점이 무엇이 있었나요?

    • 스마트컨트랙트 부분을 고려하여 데이터베이스를 설계한 것
      ex) NFT 관련 정보를 DB에 컬럼으로 저장할지, 스마트컨트렉트 서버에 저장할지 => 가스비, 보안 등 고려
  3. SSL/TLS는 왜 설정하셨나요?

  1. 리액트에서 클래스형 컴포넌트와 함수형 컴포넌트의 차이는 무엇일까요?
  2. jsx 문법을 사용하셨던데 리액트에서 jsx문법이 어떻게 사용되는지 설명해보세요.
  3. Redux를 통한 상태관리를 함에 있어서 장단점에 대해 설명해주세요.
  1. JPA를 사용하셨던데 JPA를 사용하신 이유가 무엇인가요?

    • SQL문을 직접 사용하지 않음 -> 생산성 향상
    • 유지보수 용이 (쿼리 일일이 수정하지 않아도 돼서)
    • 여러 데이터베이스에서 사용 가능
    • 이 말이 있는데 흠..
  2. JPA의 연관관계 @OneToMany, @ManyToOne에 대해 말씀해보세요.

  • 고객 한 명이 여러개의 계좌를 보유할 수 있다고 생각해보자
  • OneToMany
    - 일대다
    • 고객 입장에서 여러개 계좌
  • ManyToOne
    - 다대일
    - 계좌 입장에서는 여러개가 한 고객을 향할 수 있음
    - 어노테이션 후 @JoinColumn 으로 주인 테이블명을 써준다

  • 단방향 매핑 : Board에서 post의 값을 불러와야함
  • 양방향 매핑 : 엄밀히 말하면 양 측에서 서로를 향해 단방향 참조를 하는 것. 양방향일 경우 연관관계의 주인을 정해서 mappedBy를 설정해야한다.
Board.getPost()처럼 참조가 필요하면 Board→Post 단방향참조
만약 참조가 굳이 필요없으면 참조를 안하면 됨
post.getBoard()처럼 참조가 필요하면 Post→Board 단방향참조
만약 참조가 굳이 필요없으면 참조를 안하면 됨

(참고 : https://soojong.tistory.com/entry/JPA-ManyToOne-OneToMany-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0)
(참고 : https://jeong-pro.tistory.com/231)

  1. web2.0과 web3.0의 차이점을 설명하고 web3.0의 이점에 대해 말씀해보세요.

    • 현재 인터넷 사용자는 일반적으로 타사 서버에서 호스팅되는 정보에 액세스한다. 이와 유사하게 새로 만들어진 앱들은 구글 클라우드나 AWS와 같은 다른 회사의 서버에 추가된다. 그러나 웹3.0는 인터넷 사용자들이 디앱(탈중앙화 앱)을 개발하고 유지할 수 있도록 한다.

    • 웹3.0이 스마트 계약 기술을 사용한다는 것이다. 간단히 말하자면 무신뢰성(trustless) 형태의 인터넷을 만드는 데 도움이 될 수 있고 제 3자 중개인의 필요성을 크게 줄일 수 있다.

    • 탈중앙화, 무신뢰성(trustless), 무허가성

    	마찬가지로, 스마트 컨트랙트의 사용은 무신뢰성(trustless) 인터넷을 만들 수 있다. 
        이는 개인이 제3의 행위자에게 신뢰를 둘 필요가 없다는 것을 의미한다. 
        예를 들어, 거래는 스마트 컨트랙트에서 암호화된 기능을 기반으로 자동으로 실행될 수 있다. 
        인터넷은 또한 무허가성(permissionless)의 성격을 띨 것이다. 
        이는 모든 사용자가 블록체인에서 거래 또는 내 거래를 검증할 수 있다는 것을 의미한다. 
        게다가 모든 사용자는 제3자의 허락을 요청하지 않고 구매나 판매와 같은 기능을 사용할 수 있다.
  1. JPA 쓰셨다고 했는데, JPA로 엔티티를 만들 때 주의해야할 점이 뭐가 있을까요? (신한 1차때 실제로 들은 질문)
    1) 가급적 Setter 사용하지 않기
    2) 모든 연관관계는 지연로딩(fetch=FetchType.LAZY)로 설정하기
    3) 컬렉션은 필드에서 초기화하자
    4) 테이블, 컬럼명 생성할 때 대소문자, 카멜케이스, .->_ 주의
    https://cornarong.tistory.com/77

  2. JPA 쓰실 때 N+1 문제 겪으신 적 있는지? (신한 1차때 실제로 들은 질문)

    • N+1 문제란?
      - 1번의 쿼리를 날렸는데 의도하지 않게 N번의 쿼리가 추가적으로 실행되는 것
    • https://dev-coco.tistory.com/165
    • 같이 확인해봐야함....
  3. QR코드 구현은 어떻게 하셨는지? 사용한 라이브러리, QR 인식 과정 말해주세요.
    import { QrReader } from "react-qr-reader";

    • 위 라이브러리 사용하여 큐알 구현

    • QR 생성시 들어가야하는 정보 : nfastSequence, userSequence
      ⇒ 해당 이용권이 우리 가게것인지, 그 손님것인지, 이 날짜/식사 시간이 맞는지 체크해야함.

      ⇒ QR 스캐너 실행 후 → QR 체크 API 호출 → 체크한 후 유효하면 nfastUseState를 1로 바꿈.

    • nfastUseState

      • 큐알을 생성해서 디비에 저장
      • 사용 : 큐알을 찍으면 디비의 nfastUseState가 1로 바뀌어 사용완료 처리됨
      • 그 후 확인 버튼을 누르면 nfastUseState를 체크하고, 1이면 잘 사용된 것으로 생각

    • 환불QR
      • 사용 : 환불큐알을 찍으면 nfastUseState가 2로 바뀌어 환불 처리됨.
      • 그 후 확인 버튼을 누르면 nfastUseState를 체크하고, 2이면 잘 환불 된 것으로 생각
profile
야금야금 앱 개발자

0개의 댓글