[email protected]
SĐT: 033.601.2453
Địa chỉ: Tây Hồ, Hà Nội
# Hoàng Đức Hiền
## Giới thiệu bản thân
Tôi là một lập trình viên có kinh nghiệm thực tế trên 3 năm trong lĩnh vực phát triển web. Tôi là người cầu toàn và luôn tìm kiếm cách tối ưu hóa các giải pháp của mình. Sự tập trung và tận tâm của tôi khi làm việc sẽ giúp tôi đạt được những thành tựu tốt nhất.
Tôi luôn tìm kiếm cơ hội để tiếp cận với những công nghệ mới nhất và thử sức trong những môi trường lớn hơn. Điều này giúp tôi không ngừng nâng cao kỹ năng và kinh nghiệm của mình để có thể đóng góp tích cực cho các dự án phát triển trong tương lai.
Kinh nghiệm chủ yếu của tôi tập trung vào việc phát triển ứng dụng sử dụng Java Spring Boot, Docker và Microservices. Tuy nhiên, tôi cũng có kiến thức và kỹ năng trong phát triển ứng dụng phía frontend với HTML, CSS và JavaScript.
Tôi đam mê công nghệ và sẵn sàng làm việc chăm chỉ để đạt được mục tiêu. Sự tỉ mỉ và tối ưu hóa của tôi sẽ giúp tôi làm việc hiệu quả và đạt được những thành công trong sự nghiệp lập trình của mình.
## Kĩ năng chuyên môn
* **Ngôn ngữ lập trình**: **Java**, SQL, **JavaScript**, Python, HTML, CSS
* **Frameworks**: **Spring Boot**, React.js, Angular, **Vue.Js**
* **Thư viện**: **Jackson**, Hibernate, **MapStruct**, Keycloak, **JWT**
* **Cơ sở dữ liệu**: **MongoDB**, PostgreSQL, **Elastic Search**
* **Công cụ lập trình**: **IntelliJ**, Visual Studio Code, **Git**, Gitlab, **JHipster**, Swagger, **Portainer**, Syncthing, **Chrome Dev Tools**
* **Kĩ năng khác**: Linux, **Docker**, Kibana, Logstash, **Rclone**
## Kinh nghiệm làm việc
02/2022 - Hiện tại
### Fullstack Developer
Thành Công Group, Cầu Giấy
* Bản đồ số
* **Team size**: 1
* **Vai trò**: Frontend, Backend, Devops
* **Công nghệ sử dụng**: Leaflet (Visualize bản đồ 2D, vẽ/đo đạc bản đồ 2D), Potree (Visualize bản đồ 3D), Spring Boot, PostgresSQL, VueJs, Docker, Redis, JHipster,... (Web)
* **Chức năng của ứng dụng**: tái hiện dữ liệu trắc địa thu được từ thiết bị bay Drone lên nền web để chia sẻ đến nhiều người,
* Visualize bản đồ 2D, 3D Point Cloud, vẽ hình trắc địa đo đạc lên nền bản đồ.
* Xây dựng Web quản lý dữ liệu trắc địa, phân quyền người dùng, đăng nhập SSO bằng Microsoft Azure AD.
* Thiết kế phân chia chức năng thành Microservice gồm: service convert dữ liệu 2D, serve dữ liệu 2D, convert và serve dữ liệu 3D, gateway với Nginx...
* Thiết kế cụm ELK (Elastic-Logstash-Kibana) để theo dõi log trong ứng dụng như: ai truy cập vào hệ thống thời gian nào thực hiện chức năng gì, thời điểm nào có đông lượng truy cập, API nào đang được sử dụng nhiều nhất...
* **Tổng hợp số liệu file Excel**
* **Team size**: 1
* **Vai trò**: Frontend, Backend, Devops
* Chức năng tổng hợp số liệu từ nhiều file excel vào một vài file excel tổng.
* Xây dựng Web quản lý User, lưu trữ dữ liệu
* **Công nghệ sử dụng**: Spring Boot, VueJs, MongoDB, Apache POI, Docker, JHipster...
* Download hàng loạt tệp đính kèm Outlook Mail
* Viết một Web nhỏ bằng HTML/CSS/JS sử dụng API của Microsoft để Download Email hàng loạt phục vụ nhu cầu nội bộ.
2020 - Hiện tại
### Backend Developer
__Freelancer__
* **Streaming Recorder**
* **Team size**: 1
* **Vai trò**: Backend
* **Công nghệ**: Java Core
* **Chức năng**: thu thập dữ liệu từ các website Livestream đang sử dụng HLS.
* **Công nghệ**: Sử dụng Java để download các file video được phân mảnh *.ts, sau đó ghép lại bằng FFMpeg, và gửi đi bằng Rclone. Lưu trữ dữ liệu xử lý bằng MongoDB.
* **Tối ưu**: áp dụng các kĩ thuật bất đồng bộ, và các tối ưu bộ nhớ trong Java, đạt được kết quả: Lưu lượng tổng qua 1 VPS 3CPUs, 4GB Ram, 100GB SSD là **2TiB/ngày**
* **Phân tán**: Sử dụng MongoDB Concurrency (findAndModify) để phân chia công việc giữa các Node, các Node giao tiếp chung qua 1 Database service giúp scale ứng dụng.
* **TTS App**
* **Team size**: 1
* **Vai trò**: Mobile (Android)
* **Công nghệ**: Android (O+) (Java 8), FFMpeg (Xử lý audio)
* Ứng dụng chuyển văn bản thành giọng nói sử dụng thư viện Speech Services của Google.
* Chức năng tiền xử lý dữ liệu đầu vào, xử lý dấu câu, unicode, đọc số, đọc danh từ riêng, đọc từ viết tắt,...
* Chức năng chia profile dựa trên từng nhu cầu sử dụng khác nhau gồm: nội dung văn bản, câu đang đọc hiện tại, tone giọng, tốc độ đọc.
* Chức năng export nội dung sang MP3, và đọc subtitle (import file sub srt, export file mp3 có thời gian đọc đúng với file srt nguồn).
* Chức năng thu thập dữ liệu từ web (báo chí, truyện,...) từ URL về và đọc
* Chức năng API: nhận yêu cầu đọc, tạo mp3... dễ dàng kết nối để tạo nội dung cho các ứng dụng client khác.
* **Theo dõi giá**
* **Team size**: 1
* **Vai trò**: Backend
* **Công nghệ**: Java Core
* **Chức năng chính**: theo dõi giá của một số sản phẩm theo cấu hình database cài đặt sẵn. Khi có biến động giá có lợi: ví dụ giảm sâu so với mức giá trung bình thì gửi tin nhắn đến khách hàng: email/telegram
* Visualize dữ liệu biến động giá của một hoặc nhiều sản phẩm thành biểu đồ để quan sát.
04/2021 - 02/2022
### Backend Developer
VnTravel, Đống Đa
* **App Chat nội bộ**:
* **Team size**: 4 người
* **Vai trò**: Backend Developer
* **Công nghệ**: Spring Boot, Postgres
* Tham gia phát triển, sửa lỗi, nâng cấp tính năng dự án Chat nội bộ.
* Chuyển đổi dữ liệu của dự án Chat từ **Cassandra** sang **Firestore** (Google) giúp tối ưu tốc độ ghi nhanh.
* **App thương mại điện tử bán thực phẩm tươi**
* **Team size**: ~ 20 người
* **Vai trò**: Backend Developer mảng sản phẩm
* **Công nghệ**: Spring Boot, Postgres, Elastic, MongoDb
* **Công việc**: Thiết kế, phát triển Database và API cho danh mục sản phẩm,
* Phát triển API tìm kiếm sản phẩm và gợi ý tự động hoàn thành tìm kiếm dựa trên các từ khóa như tên, nhà cung cấp, nhãn hàng... sử dụng **Elastic Search**.
* Tìm hiểu thư viện Disruptor cho bài toán Concurrency
* **Team size**: 1
* **Vai trò**: Backend Developer
* **Công nghệ**: Java Core, Disruptor, JMH
* **Công việc**: Tìm hiểu cách sử dụng, so sánh hiệu năng của Disruptor với thư viện **ExecutorService**, so sánh ưu nhược điểm với từng tình huống sử dụng khác nhau.
* **Kết quả**: Tìm hiểu được cách sử dụng, hiểu được cấu trúc bên trong của Disruptor, so sánh hiệu năng với ExecutorService, và kết luận được ưu nhược điểm của từng thư viện.
04/2019 - 11/2020
### Fullstack Developer
__DailyOpt, Đà Nẵng__
* **Các bài toán tối ưu**
* Tìm hiểu, khai thác và nâng cấp các thư viện cho các bài toán tối ưu như xếp hàng lên xe với ràng buộc kích thước, tải trọng và tổng lộ trình các xe...
* Tìm hiểu các công nghệ để triển khai web-app, api, database tích hợp vào sản phẩm cho khách hàng.
* Dự án Web nguồn mở cho chuỗi cung ứng hàng hóa
* **Team size**: 2 người
* **Vai trò**: Fullstack Developer
* **Công nghệ**: Spring Boot, React JS, Postgres, MongoDb
* **Công việc**: Thiết kế giao diện, Database và API cho các module: Quản lý sản phẩm, Quản lý đơn hàng, Quản lý kho, Quản lý nhà cung cấp, Quản lý khách hàng, Quản lý nhân viên, Quản lý báo cáo,... Xây dựng và minh họa các thuật toán tối ưu cho các bài toán lập lộ trình di chuyển.
* **Kết quả**: Xây dựng được một ứng dụng web nguồn mở cho chuỗi cung ứng hàng hóa, có thể sử dụng cho các doanh nghiệp khác.
02/2017 - 03/2018
### Java Internship
Viettel Cyberspace Center, Hà Nội
* Nghiên cứu hướng giải quyết bài toán: Tìm từ khóa đang là xu hướng từ dữ liệu báo chí
* Tìm hiểu một số kiến thức cơ bản trong xử lý ngôn ngữ tự nhiên, Tìm hiểu về API, sử dụng các dịch vụ API công cộng,
* Triển khai các thuật toán tiền xử lý, trích chọn đặc trưng, đánh giá các từ khóa nổi bật dự báo xu hướng bằng Java.
## Học vấn
08/2014 - 06/2019
Đại học Bách Khoa Hà Nội
* Chuyên ngành: Khoa học máy tính, Kỹ sư
* Xếp loại: Giỏi
2011 - 2014
THPT Chuyên Thái Bình