카카오

카카오톡, 다음, 카카오맵, 멜론

개발팀 리뷰

위 내용은 카카오 전 • 현 재직자의 응답 결과입니다.

기술 스택

언어

javascript

Java

Kotlin

프론트엔드

Angular

ReactJS

Redux

백엔드

NestJs

Spring

SpringBoot

데이터베이스

PostgreSQL

Redis

mongodb

데브옵스

Argo CD

Jenkins

OpenEBS

재직자가 작성한 글

profile picture

황민호

Kakao General Developer

패스트캠퍼스 ,프롬프트 엔지니어링으로 시작하는 AI/LLM 서비스 개발

패스트캠퍼스 추천강의! 프롬프트 엔지니어링으로 시작하는 AI/LLM 서비스 개발 - 카카오, 마이크로서비스, 11번가, 신한은행 AI 엔지니어들이 함께 구성한 강의 - 카카오의 GenAI 파트 Lead인 김민석님이 참여 중인 강좌로 바쁜 일정 중에도 주말 휴일 전부 갈아 넣어 강의를 준비했다고 합니다. - 실제 AI 서비스 프로젝트를 통해 AI 서비스 개발 역량을 높이시고 싶은 분들에게 추천드립니다. - 최대 80명까지 사용 가능한 20% 할인 쿠폰도 공유드립니다. 쿠폰은 5월 8일까지 사용 가능합니다. - 쿠폰코드 : PRDTEA240424_hmh - https://bit.ly/3w6eeII

profile picture

황민호

Kakao General Developer

생성형 AI 강좌 리스트

생성형 AI 교육을 위한 무료, 유료 강좌들을 모아 공유합니다. [무료] 1. 구글, Generative AI for Developers Learning Path - Beginner: Introduction to Generative AI Learning Path https://www.cloudskillsboost.google/paths/118 - Advanced: Generative AI for Developers Learning Path https://www.cloudskillsboost.google/paths/183 - Google Cloud Applied AI Summit Learning Path https://www.cloudskillsboost.google/paths/280 2. MS, Generative AI for Beginner - https://microsoft.github.io/generative-ai-for-beginners - MS, GitHub Copilot 페어프로그래밍 마스터 https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming 4. DeepLearning AI - https://www.deeplearning.ai/short-courses 5. IBM, Generative AI for SW Developer - https://www.coursera.org/specializations/generative-ai-for-software-developers 6. Coursera, AI 강좌 모음 - https://www.coursera.org/courses?query=generative%20ai [유료 - 패스트캠퍼스 추천 강좌] 1. 패스트캠퍼스, 프롬프트 엔지니어링으로 시작하는 AI/LLM 서비스 개발 - 카카오, 마이크로서비스, 11번가, 신한은행 AI 엔지니어들이 함께 구성한 강의 - 카카오의 GenAI 파트 Lead인 김민석님이 참여 중인 강좌로 바쁜 일정 중에도 주말 휴일 전부 갈아 넣어 강의를 준비했다고 합니다. - 실제 AI 서비스 프로젝트를 통해 AI 서비스 개발 역량을 높이시고 싶은 분들에게 추천드립니다. - 최대 80명까지 사용 가능한 20% 할인 쿠폰도 공유드립니다. 쿠폰은 5월 8일까지 사용 가능합니다. - 쿠폰코드 : PRDTEA240424_hmh - https://bit.ly/3w6eeII 2. 패스트캠퍼스, The Red 프롬프트 엔지니어링, LLM(ChatGPT) 기반의 AI 서비스 개발 - 김진중 (골빈해커) 님의 프롬프트 강의 - 기초부터 고급 프롬프트 기법들을 모두 소개하고 있으며, 실전 예제들이 잘 나와 있습니다. - 프롬프트 엔지니어링을 마스터하고 AI 서비스 개발 역량을 높이고 싶으신 분들에게 추천드립니다. - https://fastcampus.co.kr/data_red_golbin 3. 패스트캠퍼스, The Red Microsoft AI 개발자의 LLM 마스터 클래스: AI 서비스 개발부터 운영까지 - 현) Microsoft AI 소속의 주한나 (양파) 님의 LLM 서비스 개발 강의 - LLM 서비스 개발 풀스택 과정을 하나의 강의로 담아냈습니다. - 프롬프트 기초부터 임베딩, RAG, 파인튜닝, RAI, LLMOps 까지 풀스택을 경험하고 싶으신 분들에게 추천드립니다. - https://fastcampus.co.kr/data_online_llmmaster

재직자가 좋아한 글

Spring 면접 전 살펴보기 위한 Q&A 35가지 (2024년 ver)  |   1. 스프링 프레임워크란 무엇인가요? * 자바 엔터프라이즈 애플리케이션 개발을 위한 가장 널리 사용되는 프레임워크입니다. * 경량화, 제어 역전(IOC), 관점 지향 프로그래밍(AOP), 트랜잭션 관리 등의 기능을 제공합니다. 2. 스프링을 사용하면 어떤 장점이 있나요? * 경량화로 프레임워크로 인한 개발 오버헤드가 적습니다. * IoC 컨테이너가 객체 간 의존성 주입을 관리해줍니다. * AOP로 핵심 로직과 시스템 서비스를 분리할 수 있습니다. 3. 대표적인 스프링 하위 프로젝트들은 무엇인가요? * 스프링 코어: IoC/DI 등 프레임워크 핵심 기능 제공 * 스프링 JDBC: JDBC 코딩 없이 DB 연동 기능 * 스프링 ORM: JPA, Hibernate 등의 ORM 연동 계층 * 스프링 웹: 파일 업로드, 서블릿 리스너 등 웹 관련 기능 * 스프링 MVC: MVC 아키텍처 웹 개발 모듈 * 스프링 AOP: AOP 구현 및 메소드 인터셉터 정의 4. 의존성 주입(DI)이란 무엇인가요? * 객체를 직접 생성하지 않고, 생성 방법을 기술하면 IoC 컨테이너가 필요할 때 인스턴스화해서 주입하는 개념입니다. 5. 스프링에서 빈을 주입하는 방식에는 어떤 것들이 있나요? * Setter 주입 * 생성자 주입 * 필드 주입 * XML 또는 애노테이션으로 설정 가능 6. 빈 주입 방식 중 권장되는 방식은 무엇이고 그 이유는 무엇인가요? * 필수 의존성은 생성자 주입, 선택적 의존성은 Setter 주입을 권장합니다. * 생성자 주입을 사용하면 immutable 필드에 값 주입이 가능하고 테스트가 용이해집니다. 7. BeanFactory와 ApplicationContext의 차이점은 무엇인가요? * BeanFactory는 빈 인스턴스를 제공하고 관리하는 컨테이너 인터페이스입니다. getBean()이 호출될 때 lazy하게 빈을 생성합니다. * ApplicationContext는 BeanFactory를 상속하면서 애플리케이션의 모든 정보, 메타데이터, 빈을 담고 있는 컨테이너 인터페이스입니다. 기본적으로 애플리케이션 구동 시점에 eager하게 빈을 생성합니다. 8. 스프링 빈이란 무엇인가요? * 스프링 IoC 컨테이너에 의해 인스턴스화, 관리되는 자바 오브젝트를 말합니다. 9. 스프링 프레임워크에서 빈의 기본 스코프는 무엇인가요? * 별도 설정이 없다면 스프링 빈은 singleton 스코프로 생성됩니다. 10. 빈의 스코프는 어떻게 지정할 수 있나요? * @Scope 애노테이션이나 XML 설정 파일에서 "scope" 속성을 사용해 지정할 수 있습니다. * 스프링에서 지원하는 빈 스코프에는 다음과 같은 것들이 있습니다. * singleton * prototype * request * session * global-session 11. 싱글톤 빈은 스레드에 안전한가요? * 아니오. 싱글톤 빈 자체는 스레드 세이프하지 않습니다. * 스레드 안전성은 빈의 실행 방식에 달려 있고, 싱글톤은 생성 방식에 초점을 둔 디자인 패턴입니다. * 빈의 구현 코드에 따라 스레드 안전성이 결정됩니다. 12. 스프링 빈의 생명주기는 어떻게 되나요? * 빈 정의를 읽고 인스턴스화 → 의존성 주입 → 초기화 콜백 메소드 호출 → 사용 → 소멸 콜백 메소드 호출 → 빈 소멸 * 각 단계별로 초기화 메소드, 소멸 메소드 등을 빈에 적절히 설정해서 사용할 수 있습니다. 13. 스프링 자바 기반 설정이란 무엇인가요? * XML 기반 설정의 대안으로, 자바 클래스와 애노테이션을 사용해 설정하는 방식입니다. * 타입 세이프한 방식으로 스프링 애플리케이션 구성이 가능합니다. 14. 하나의 프로젝트에 여러 개의 스프링 설정 파일을 사용할 수 있나요? * 네, 가능합니다. 큰 프로젝트에서는 모듈화와 유지보수성을 위해 여러 개의 설정 파일 사용이 권장됩니다. * 자바 기반 설정에서는 @Configuration과 @Import 애노테이션을 사용해 여러 설정 클래스를 조합할 수 있습니다. * XML 기반 설정에서는 <import> 태그를 사용해 여러 XML 파일을 조합할 수 있습니다. 15. 스프링 시큐리티란 무엇인가요? * 스프링 기반 애플리케이션의 인증과 권한 부여 등 보안 기능을 담당하는 프레임워크입니다. * 스프링 시큐리티를 사용하면 인증/인가 관련 표준 로직을 작성하지 않아도 되고, CSRF 공격 등을 방어할 수 있습니다. * 웹 애플리케이션에 @EnableWebSecurity 애노테이션만 붙여주면 기본적인 웹 보안 기능이 작동합니다. 16. 스프링 부트란 무엇인가요? * 스프링 기반 애플리케이션을 빠르게 개발할 수 있게 도와주는 프로젝트입니다. * 단독 실행 가능한 스프링 애플리케이션을 쉽게 생성할 수 있습니다. * 내장 서버, 자동 설정, starter 의존성 등으로 최소한의 설정으로 개발을 시작할 수 있습니다. 17. 스프링 프레임워크에서 사용되는 디자인 패턴에는 어떤 것들이 있나요? * 싱글톤 패턴: 싱글톤 스코프의 빈 * 팩토리 패턴: BeanFactory 클래스 * 프로토타입 패턴: 프로토타입 스코프의 빈 * 프록시 패턴: 스프링 AOP * 템플릿 메소드 패턴: JdbcTemplate, HibernateTemplate 등 * 프론트 컨트롤러 패턴: 스프링 MVC의 DispatcherServlet * 데이터 접근 오브젝트(DAO) 패턴: 스프링 DAO 지원 18. 프로토타입 스코프는 어떻게 동작하나요? * 프로토타입 스코프로 정의된 빈은 매번 getBean() 메소드가 호출될 때마다 새로운 오브젝트를 생성해서 반환합니다. * 이는 기본인 싱글톤 스코프와 대조적입니다. 싱글톤은 IoC 컨테이너당 하나의 오브젝트만 생성합니다. 19. 스프링 빈에서 ServletContext와 ServletConfig 객체는 어떻게 얻나요? * 스프링에서 제공하는 Aware 인터페이스들을 구현하는 방법이 있습니다. * @Autowired 애노테이션을 사용해서 주입받는 방법도 가능합니다. 20. 스프링 MVC의 컨트롤러란 무엇인가요? * 스프링 MVC에서 사용자의 요청을 처리하는 컴포넌트입니다. * @Controller 애노테이션이 붙은 클래스가 컨트롤러의 역할을 합니다. * 컨트롤러 클래스의 메소드는 @RequestMapping 애노테이션으로 매핑된 특정 URI를 처리합니다. 21. @RequestMapping 애노테이션은 어떻게 사용하나요? * 요청 URL을 컨트롤러의 메소드와 매핑할 때 사용하는 애노테이션입니다. * URL 패턴 외에도 HTTP 메소드 타입, 헤더, 파라미터 등을 매핑 조건으로 지정 가능합니다. * @PathVariable을 통해 URL 템플릿 변수를 메소드 파라미터로 받을 수 있습니다. * @RequestParam을 통해 HTTP 요청 파라미터를 메소드 파라미터로 받을 수 있습니다. 22. 스프링 JDBC의 JdbcTemplate 클래스는 무엇이고 어떻게 사용하나요? * 스프링에서 JDBC 프로그래밍을 쉽게 할 수 있도록 제공하는 템플릿 클래스입니다. * 리소스 생성, 해지 등의 low-level 작업을 대신 처리해줍니다. * SQLException을 스프링 DataAccessException으로 변환하는 기능도 제공합니다. * JdbcTemplate을 사용하려면 DataSource를 스프링 설정 파일에 등록해야 합니다. 23. 스프링에서 트랜잭션은 어떻게 사용하고, 어떤 이점이 있나요? * 선언적 트랜잭션(@Transactional)과 프로그래밍적 트랜잭션(TransactionTemplate) 두 가지 방식을 제공합니다. * 선언적 트랜잭션은 코드 침투가 없고 AOP를 사용하기 때문에 권장됩니다. * 트랜잭션 전파, 격리 수준, 읽기 전용 등을 애노테이션 속성으로 제어할 수 있습니다. * 트랜잭션 경계를 메소드 단위로 설정할 수 있어서 productivity가 높아집니다. * 다양한 데이터 접근 기술에 대해 일관된 트랜잭션 제어가 가능합니다. 24. 스프링 DAO란 무엇인가요? * Data Access Object의 약자로, 데이터 접근을 추상화한 객체입니다. * 스프링은 일관성 있는 DAO를 작성할 수 있도록 다양한 기능을 제공합니다. * 저수준 예외를 스프링의 통일된 예외 체계로 변환해줍니다. * 템플릿 클래스를 통해 boilerplate 코드를 제거할 수 있습니다. 25. AOP(Aspect-Oriented Programming)란 무엇인가요? * 관점 지향 프로그래밍이라고 하며, 스프링의 핵심 기능 중 하나입니다. * 여러 객체에 공통으로 적용될 수 있는 기능(cross-cutting concern)을 분리해서 모듈화합니다. * 주로 로깅, 트랜잭션, 보안 등 인프라 레벨의 공통 기능을 구현하는데 사용합니다. * AOP를 통해 객체 간 결합도를 낮추고, 코드 재사용성을 높일 수 있습니다. 26. AOP에서 Aspect, Advice, Pointcut, JoinPoint란 무엇인가요? * Aspect: 여러 객체에 공통으로 적용되는 공통 관심사(cross-cutting concern)를 모듈화 한 것입니다. 트랜잭션 관리 등이 대표적입니다. * Advice: 특정 JoinPoint에서 Aspect에 의해 취해지는 조치입니다. Around, Before, After 등의 타입이 있습니다. * Pointcut: Advice가 적용될 JoinPoint를 선별하는 조건입니다. 주로 정규 표현식으로 표현합니다. * JoinPoint: Advice가 적용될 수 있는 위치입니다. 메소드 호출, 예외 발생 등이 있습니다. 27. AOP의 Weaving이란 무엇인가요? * Aspect를 타깃 객체에 적용해서 새로운 프록시 객체를 생성하는 과정을 말합니다. * 즉, Advice를 핵심 로직 코드에 삽입하는 과정입니다. * 컴파일타임, 로딩타임, 런타임에 적용할 수 있는데, 스프링 AOP는 런타임 위빙을 사용합니다. 28. 리액티브 프로그래밍이란 무엇인가요? * 데이터 흐름과 변경 전파에 중점을 둔 프로그래밍 패러다임입니다. * 주요 특징으로는 논블로킹(non-blocking), 이벤트 기반(event-driven), 느슨한 결합(loosely coupled), 확장성(scalable) 등이 있습니다. * Observer 패턴을 확장해서, 데이터 스트림을 비동기적으로 처리합니다. * 스프링에서는 5.0 버전부터 WebFlux를 통해 리액티브 프로그래밍을 지원하고 있습니다. 29. 스프링 WebFlux란 무엇인가요? * 스프링 5.0에서 추가된 리액티브 웹 프레임워크입니다. * 기존의 스프링 MVC와는 별개의 모듈로서 완전한 논블로킹 방식으로 동작합니다. * 네티(Netty)를 기반으로 동작하며, 서블릿 컨테이너에서도 동작 가능합니다. * 함수형 프로그래밍 방식을 지원하며, Mono와 Flux 타입을 사용해 리액티브 데이터 타입을 표현합니다. 30. Mono와 Flux란 무엇인가요? * 스프링 5의 리액티브 프로그래밍에서 사용되는 핵심 객체 타입입니다. * Mono는 0-1개의 데이터를 발행하는 Reactive Stream 구현체입니다. * Flux는 0-N개의 데이터를 발행하는 Reactive Stream 구현체입니다. * 모두 Reactive Stream 표준 인터페이스인 Publisher를 구현하고 있습니다. 31. WebClient와 WebTestClient는 각각 어떤 용도인가요? * WebClient는 스프링 WebFlux에서 제공하는 논블로킹 방식의 리액티브 HTTP 클라이언트입니다. * HTTP 요청을 비동기적으로 처리하며, Mono나 Flux를 사용해 응답을 받을 수 있습니다. * WebTestClient는 WebFlux 애플리케이션을 테스트할 때 사용하는 클라이언트입니다. * 실제 서버를 띄우지 않고도 mock request/response를 사용해 컨트롤러 테스트를 할 수 있습니다. 32. 리액티브 스트림 사용 시 주의할 점은 무엇인가요? * 리액티브 프로그래밍은 기존 방식과 사고의 전환이 필요해 진입장벽이 높습니다. * 리액티브 스트림을 디버깅하기 쉽지 않기 때문에 디버깅 방식에 대한 학습이 필요합니다. * 전통적인 JDBC 기반 DB 드라이버는 리액티브 방식을 지원하지 않아 사용에 주의가 필요합니다. 33. 스프링 5에서 리액티브 프로그래밍을 지원하기 위해 최소 자바 버전이 올라갔나요? * 네, 맞습니다. 스프링 5는 자바 8 이상에서만 동작합니다. * 자바 8의 람다, Stream API, CompletableFuture 등을 활용하기 위해 최소 사양을 올린 것으로 보입니다. 34. 스프링 5는 자바 9의 모듈 시스템(Jigsaw)을 어떻게 지원하나요? * 스프링 5의 프레임워크 라이브러리들은 자바 9 모듈 시스템을 따르도록 변경되었습니다. * 그래서 필요한 모듈만 선택적으로 가져올 수 있게 되었습니다. * 하지만 스프링 부트 2.0에서는 아직 자바 9 모듈을 완벽하게 지원하지 않습니다. 35. 스프링 MVC와 WebFlux를 함께 사용할 수 있나요? * 스프링 부트에서는 현재 둘 중 하나만 선택해서 사용하는 것을 권장합니다. * 왜냐하면 둘 다 사용하면 자동 설정이 제대로 동작하지 않기 때문입니다. * 또한 스프링 MVC는 서블릿 기반인 반면 WebFlux는 네티 기반이라 함께 사용하기에 적절치 않습니다. 출처 : https://www.baeldung.com/spring-interview-questions

좋아요 476 저장 1190

thumbnail