File upload trong Spring
Trong quá trình xây dựng một ứng dụng web nói chung. Việc lưu trữ, xử lý các tệp tin từ các request của người dùng là một tác vụ cơ bản cần phải có. Trong các ứng dụng Java web cũng không là ngoại lệ. Bài viết này mình xin giới thiệu cách xây dựng một ứng dụng Spring Web MCV có khả năng xử lý và lưu trữ các tệp tin được gửi lên thông qua giao thức HTTP.
Bài viết này sẽ tập trung vào cách Xư lý file được upload multilpart-form cùng một số phương pháp lưu trữ cơ bản.
Cấu hình
Xây dựng bằng Spring MVC
Spring cho phép ta xử lý file thông qua một đối tượng MultipartResolver mà Spring cung cấp, Và để nó có thể hoạt động, ta cần phải cấu hình chúng.
Đầu tiên chúng ta cần 1 dependency sau
<dependency> |
Tiếp sau đó ta cần định nghĩa CommonsMultipartResolver Bean vào trong file cấu hình Spring của chúng ta
Java class annotation config
@Configuration @EnableWebMvc @ComponentScan(“hivetech.sang.*”) public class MutilpartFileConfig { @Bean(name = “multipartResolver”) public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(100000); return multipartResolver; } } |
XML config
<beans xmlns=”https://www.springframework.org/schema/beans” xmlns:xsi=”https://www.w3.org/2001/XMLSchema-instance” xmlns:context=”https://www.springframework.org/schema/context” xsi:schemaLocation=”https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd”> <context:component-scan base-package=”hivetech.sang.*”/> <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”> <property name=”maxUploadSize” value=”1000000″/> </bean> </beans> |
Đối tượng CommonsMultipartResolver có nhiều các property khác nhau như: uploadTempDir, defaultEncoding, maxUploadFilePerSize,… Tuỳ vào nhu cầu ta có thể thêm các trường này để config như mong muốn
Vậy là ta đã cấu hình xong. Bây giờ ứng dụng Spring WebMVC của chúng ta đã có thể hỗ trợ upload file như mong muốn.
Xây dựng bằng Spring boot
Với một ứng dụng Spring Boot. Mọi thứ ở trên đều được hỗ trợ. Thậm chí Spring Boot còn khiến nó trở nên dễ dàng hơn nữa khi mà ta không cần phải thực hiện bất cứ công đoạn cấu hình nào. Mọi thứ đã được Spring tự động thêm vào khi chúng ta thêm Web module của ứng dụng Spring boot
<dependency> |
Việc còn lại ta cần làm là tuỳ chỉnh các thông số tương tự như với cách mà Spring MVC làm. Tất cả sẽ được định nghĩa trong file application.properties
spring.servlet.multipart.max-file-size=128KBspring.servlet.multipart.max-request-size=128KB #We can also control whether file uploading is enabled, and the location for temp file upload: spring.servlet.multipart.enabled=true #define the upload location by variable so that we can use the temporary location for different operating systems.spring.servlet.multipart.location=${java.io.tmpdir} |
Các cách lưu trữ file
Lưu trữ file có nhiều phương pháp khác nhau, Tuỳ từng trường hợp ta có thể lựa chọn các cách lưu trữ phù hợp, Các cách lưu trữ phổ biến nhất hiện nay ta có thể kể tới:
- Lưu trữ trực tiếp vào bộ nhớ của server và lưu tên file vào cơ sở dữ liệu
- Lưu trữ thẳng vào database dưới dạng binary
- Lưu trữ trên các nền tảng đám mây, các server lưu trữ chuyên biệt như GoogleDrive, MinIO, AWS S3,… thông qua các API được cung cấp
Lưu trữ trực tiếp
Đây là phương pháp thường thấy trong các ứng dụng nhỏ, dung lượng các file không lớn do sự đơn giản của nó. Tuy nhiên phương pháp này có nhiều nhược điểm khi mà dữ liệu được lưu trực tiếp sẽ gây tốn cho tài nguyên máy chủ, cùng với đó sẽ khó nâng cấp được khi hệ thống mở rộng
Ta tạo một đối tượng để có thể lấy ra thông tin về các custom setting được chúng ta tự định nghĩa trong file application.properties
Spring.servlet.multipart.max-file-size=128KB |
Tạo một object để đọc config ở trên
@ConfigurationProperties(prefix = “storage”) public class FileStoreConfig { /** * Folder location for storing files */ private String location; public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } } |
Tiếp đó ta sẽ tạo một đối tượng Service gồm các function cơ bản như lưu file, hiển thị
@Configuration |
Tiếp đó ta sẽ tạo một Controller để xử lý request
@RestController public class FileManagerLocal { @Autowired private FileManagerLocalService fileManagerLocalService; @GetMapping(“/hello”) public String hello() { return “hello”; } @GetMapping(“/list-file”) public List<Object> listUploadedFiles() throws IOException { return Arrays.asList(fileManagerLocalService.loadAll().toArray()); } @GetMapping(“/files/{filename:.+}”) public ResponseEntity<Resource> serveFile(@PathVariable String filename) { Resource file = fileManagerLocalService.loadAsResource(filename); return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, “attachment; filename=\”” + file.getFilename() + “\””).body(file); } @PostMapping(“/add-file”) public ResponseEntity handleFileUpload(@RequestParam(“file”) MultipartFile[] file, @RequestParam(“description”) String desc) { return ResponseEntity.ok().body(fileManagerLocalService.store(file)); } @ExceptionHandler(FileStoreException.class) public ResponseEntity<?> handleStorageFileNotFound(FileStoreException exc) { return new ResponseEntity(exc.getMessage(), HttpStatus.I_AM_A_TEAPOT); } } |
Ta sẽ test ứng dụng bằng Postman như sau

Lưu trữ trực tiếp vào database dưới dạng binary
Đây là phương pháp ít được sử dụng hơn do có nhiều nhược điểm như giới hạn về dung lượng, gây khó khăn trong truy xuất dữ liệu,… Tuy nhiên nếu như các tệp tin nhỏ có thể sử dụng phương pháp này nhưng không khuyến khích
Đầu tiên ta tạo một Entity với một trường annotation Lob với kiểu dữ liệu byte[]
@Table(name = "file_entity")public
class
FileEntity {
@Id
@GeneratedValue
@Column(name = "id")private
Long id;
private
String name;
private
String type;
@Lob
private
byte[] content;
}
Tiếp đó ta tạo một Repository để thao tác với CSDL
@Repository public interface FileDBRepo extends JpaRepository<FileEntity, Long> { FileEntity findByNameEquals(String filename); void deleteByNameEquals(String fileName); } |
Rồi sau đó ta cũng tạo một đối tượng Service cùng một số function cơ bản
@Service public class FileManagerDBServiceIlpm implements FileManagerDBService { @Autowired FileDBRepo fileDBRepo; @Override public FileEntity store(MultipartFile file) { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); try { FileEntity FileDB = FileEntity.builder() .name(fileName) .type(file.getContentType()) .content(file.getBytes()) .build(); return fileDBRepo.save(FileDB); } catch (IOException e) { throw new FileStoreException(“Cant save file with cause “+e.getMessage(), e); } } @Override public List<FileEntity> store(MultipartFile[] files) { return Arrays.asList(files).stream().map(this::store).collect(Collectors.toList()); } @Override public void delete(String filename) { fileDBRepo.deleteByNameEquals(filename); } @Override public Resource loadAsResource(String filename) { return new ByteArrayResource(fileDBRepo.findByNameEquals(filename).getContent()); } } |
Tạo Controller để xử lý Request
@RestController() @RequestMapping(path = “/db-manager”) public class FileManagerDB { @Autowired FileManagerDBService fileManagerDBService; @GetMapping(“/hello”) public String hello() { return “hello”; } @GetMapping(“/files/{filename:.+}”) public ResponseEntity<Resource> serveFile(@PathVariable String filename) { Resource file = fileManagerDBService.loadAsResource(filename); return ResponseEntity.ok().body(file); } @PostMapping(“/add-file”) public ResponseEntity handleFileUpload(@RequestParam(“file”) MultipartFile[] file, @RequestParam(“description”) String desc) { return ResponseEntity.ok().body(fileManagerDBService.store(file)); } } |
Ta tiến hành upload một ảnh

Dữ liệu đã được lưu trong database dưới dạng nhị phân

Kiểu dữ liệu Blob trong mySQL có dung lượng lưu trữ lên tới 4GB (LONGBLOB)
Kết luận
Từ các ví dụ trên ta có thể thấy các cách lưu trữ khác nhau và tự rút ra được ưu nhược điểm. Cùng với đó là cách khởi tạo mà triển khai một ứng dụng Spring web hỗ trợ thao tác và xử lý file.
Ngoài ra chủ đề về upload và lưu trữ file trên các nền tảng đám mây sẽ được bổ sung trong 1 chủ đề khác.
Phần code chi tiết có thể xem tại đây Link
Phạm Đức Sang
- Published in Uncategorized
(Fresher/Junior) NodeJS/Fullstack (NodeJS/ReactJS)
1. Mô Tả Công Việc
- Tham gia các dự án outsourcing mảng Banking – Financial tại thị trường châu Âu và Úc.
- Tham gia phát triển công nghệ và sản phẩm công nghệ dành cho giáo dục.
- Xây dựng các ứng dụng trên nền web, ứng dụng dành cho doanh nghiệp, tổ chức trong và ngoài nước.
2. Yêu Cầu Ứng Viên
Yêu cầu bắt buộc
- Có trách nhiệm, nhiệt huyết với công việc, có khả năng làm việc bền bỉ dưới áp lực cao
- Công ty đánh giá cao những ứng viên có ý định gắn bó lâu dài với công ty, muốn phát triển nghề nghiệp bền vững.
- Có kinh nghiệm với NodeJS/ReactJS
- Có kinh nghiệm lập trình Website, Web Application, Restful API
- Có hiểu biết với một trong các database như MySQL, MSSQL, PostgreSQL
- Kinh nghiệm làm việc với các công cụ quản lý source code: SVN/Git
Ưu tiên
- Có khả sử dụng tiếng Anh tốt.
- Có khả năng làm việc nhóm, diễn đạt tốt
3. Thu Nhập & Quyền Lợi
Quyền lợi
- Mức lương tùy thuộc vào kỹ năng và kinh nghiệm (6-15M).
- Bonus từ 1-3M đối với ứng viên có kỹ năng tiếng anh tốt
- Thời gian làm việc: 08h00-17h00 từ thứ 2 đến thứ 6.
- Trợ cấp ăn trưa tại Công ty.
- Thưởng Tết và cơ chế riêng của công ty.
- Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp theo Luật lao động.
- Khám sức khỏe định kỳ hàng năm tại bệnh viện uy tín.
Tại Sao Bạn Sẽ Yêu Thích Làm Việc Tại Đây
- Làm việc, học hỏi và phát triển cùng đồng nghiệp là những kỹ sư trẻ tài năng, đam mê và có lý tưởng lớn
- Cùng nghiên cứu và thử thách với những công nghệ mới và các hot tech trend trên thế giới AI, IoT, VR&AR…
- Được đào tạo chuyên môn và tham gia các khóa học, tương tác nâng cao kỹ năng
- Được tham gia các chương trình training về kỹ năng công nghệ và kỹ năng mềm, phương pháp làm việc (Agile, Scrum…).
- Được tư vấn và chia sẻ về phát triển năng lực và nghề nghiệp bản thân.
- Cơ hội đi đào tạo hoặc công tác trong và ngoài nước
4. Cách thức ứng tuyển
Ứng viên quan tâm vui lòng gửi CV vào email : hrd@hivetech.vn với tiêu đề [HiveTech] Vị trí ứng tuyển _ Họ và Tên
- Published in Recruitment
Hệ cơ sở dữ liệu – MariaDB
Trong bài viết tôi giới thiệu về MariaDB cơ sở dữ liệu bằng cách sử dụng cơ bản bằng giao diện và command trên hai môi trường là Windows và Linux
MariaDB là một nhánh của MySQL là một trong những hệ thống quản lý cơ sở dữ liệu quan hệ SQL (Structured-Query-Language) mã nguồn mở phổ biến nhất ,được thực hiện bởi các nhà phát triển ban đầu của MySQL. Mục đích thiết kế dựa trên “Tốc độ -Tin cậy – Dễ sử dụng – Miễn phí”.
- MariaDB có các tính ưu thế:
+ Thêm công cụ lưu trữ: MyISAM ,BLACKHOLE,CSV,MEMORY,ARCHIVE
+ Cải thiện tốc độ :Đánh chỉ mục cho công cụ MEMORY(HEAP) nhanh hơn. Theo một thử nghiệm đơn giản, nhanh hơn 24% khi INSERT chỉ số nguyên và nhanh hơn 60% cho chỉ mục trên một cột CHAR(20).
+ Sử dụng công cụ lưu trữ Aria cho phép truy vấn phức tạp nhanh hơn+Tất cả mã nguồn MariaDB được phát hành dưới giấy phép GPL, LPGL hoặc BSD. MariaDB không đóng các mô-đun mã nguồn thấy trong phiên bản MySQL Enterprise. Thực tế, tất cả các tính năng nguồn đóng trong phiên bản MySQL 5.5 Enterprise được tìm thấy trong phiên bản MariaDB mã nguồn mở.
Sau đây tôi sẽ tiếp cận bài viết cho các bạn dev-backend muốn tìm hiểu về cách cài đặt và sử dụng MariaDB trên hai môi trường Windows và Linux.
PHẦN 1: Sử dụng giao diện và command làm việc với MariaDB trên hệ điều hành Windows
- Sử dụng command trên hệ điều hành Windows
- Cài đặt MariaDB sử dụng hệ điều hành Windows cài đặt và sử dụng MariaDB
Khi tiến hành downloads các phiên bản mình cần sử dụng trên web
Sau khi tải về khi cài đặt trên Windows bạn cài đặt theo các bước hướng dẫn trên giao diện
Bước 1: Cài đặt
- Sau khi cài đặt xong mở cửa sổ CMD lên check xem đã cài đặt MariaDb thành công chưa.
- Cài đặt đường patch cho MariaDB trong máy của bạn
- Check lại version, sử dụng lệnh MySQL -V : trong cmd
Bạn đã cài đặt thành công khi đã có version
Bước 2: Sử dụng lệnh cơ bản trong command để làm việc với database
- Cú pháp: MySQL -u root -p
Để đăng nhập vào data trên cmd
Nhập password của bạn khi cài đặt lúc trước
Tôi đã vào được Database của mình
- Cú pháp : show databases
Để hiển thị kho database
- Create database <name databases>
Lệnh :Create database thành công và test lại bằng: Show databases;
- cú pháp :Use springmvc; → Use <name-database>
Sử dụng database cần dùng
- Cú pháp: show tables
- Sau khi chọn dùng database ta thao tác các câu lệnh như select..
Trên đây vừa rồi tôi đã dùng cmd thao tác làm việc với database
Sử dụng giao diện trên hệ điều hành Windows
Giao diện tôi sử dụng là MySQL Workbench:
Bước 1: Đăng nhập vào database tương tự như Command line nhưng ta thao tác qua giao diện
Bước 2: Sau khi đăng nhập thành công ,các bạn chọn database cần sử dụng
Bước 3 : Thao tác các câu lệnh qua file SQL
PHẦN 2: Sử dụng Command Line làm việc với DB trên hệ điều hành Linux
Sau khi connecting vào MariaDB ,sử dụng lệnh để làm việc với DB
- Show databases
Cú pháp : Show databases
- Create databases
Cú pháp : create database
Vừa rồi tôi thực hiện việc khởi tạo một database mới. Kiểm tra lại bằng lệnh show database.
Sau khi cài đặt thành công, các câu lệnh thực hiện trên cmd của Linux cũng giống với thực hiện câu lệnh trên cmd của Window
3. Sử dụng giao diện làm việc với DB trên hệ điều hành Linux
Step 1: Setup dbeaver làm client
Bước 1: cú pháp :
wget https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb
Bước 2: Cú pháp :
sudo dpkg -i dbeaver-ce_latest_amd64.deb
Bước 3 : Cú pháp:
sudo apt install -f
Đã cài đặt thành công
Step 2: Connect to MariaDB đã cài đặt ở trên
Điền các thông tin và kiểm tra phần kết nối .
Step 3: Sau khi kết nối ta làm việc với db bình thường
Tóm lại phần trên tôi vừa chia sẻ cho các bạn hai vấn đề:
1. Cài đặt MariaDB trên hệ điều hành Window và Linux sử dụng cửa sổ Command Line và trên giao diện.
2. Sử dụng giao điện và Command Line để tương tác với database trên hai hệ điều hành Window và Linux.
Trên hệ điều hành Window tôi sử dụng clientDb là MySQL Workbench, hệ điều hành Linux sử dụng clientdb là DBeaver.
Chúc các bạn thành công!
Đoàn Văn Hiệu
- Published in Posts, Technology
[Junior/Senior] Automation Tester
1. Mô Tả Công Việc
- Xây dựng dụng cụ cho automation test và viết script cho application test;
- Định nghĩa, phát triển, triển khai và duy trì script cho automation test;
- Quản lý phiên bản (source control) cho automation test script;
- Tham gia các cuộc họp về yêu cầu dự án để hiểu mục đích của dự án. Đóng góp thông tin về tính khả thi của dự án trên phương diện testing. Ước lượng thời gian testing cho dự án;
- Đưa ra phương án testing, phát triển các chiến lược automation test và các framework cho automation test…;
- Thiết kế test case và viết automation scripts;
- Đóng góp vào việc xây dựng môi trường continuous Integration (CI) environment và cải tiến cách làm việc của công ty;
- Manual test khi cần thiết;
2. Yêu Cầu Ứng Viên
Yêu cầu bắt buộc
- Có trên 2 năm kinh nghiệm
- Hiểu biết về nhiều automation test framework và phương hướng automated testing;
- Thông thạo trong việc viết automation test script bằng các ngôn ngữ object-oriented programming;
- Có trên 1 năm kinh nghiệm làm việc trong môi trường Agile/Scrum;
- Thông thạo tiếng Anh (TOEIC 700 trở lên);
- Sẵn sàng học tập, làm quen với công nghệ mới;
- Khả năng phân tích, giải quyết vấn đề và multitasking skills;
- Khả năng thích nghi và làm việc trong môi trường có nhịp độ nhanh;
- Năng động, có thể tự chủ công việc của mình. Kỹ năng giao tiếp và làm việc nhóm tốt;
Ưu tiên
- Ưu tiên ứng viên có chứng chỉ ISTQB hoặc tương đương;
- Ưu tiên ứng viên có kinh nghiệm làm việc với CI/CD và các công cụ như Jenkins, Git,…;
- Ưu tiên ứng viên có kinh nghiệm làm Automated API Testing, Performance Testing và Security Testing;
- Ưu tiên ứng viên có khả năng dẫn dắt đội nhóm;
- Ưu tiên ứng viên có sự quan tâm tới các sản phẩm tài chính công nghệ.
3. Thu Nhập & Quyền Lợi
Quyền lợi
- Mức lương hấp dẫn, tùy thuộc vào kỹ năng và kinh nghiệm (từ 15-30M)
- Bonus cho ứng viên có khả năng sử dụng tiếng anh tốt (1-5M)
- Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp theo Luật lao động
- Thời gian làm việc: 8h-17h từ thứ 2 đến thứ 6
- Trợ cấp ăn trưa
- Thưởng Tết và cơ chế riêng của công ty
- Khám sức khỏe định kỳ hàng năm tại bệnh viện uy tín.
Tại Sao Bạn Sẽ Yêu Thích Làm Việc Tại Đây
- Làm việc, học hỏi và phát triển cùng đồng nghiệp là những kỹ sư trẻ tài năng, đam mê và có lý tưởng lớn
- Cùng nghiên cứu và thử thách với những công nghệ mới và các hot tech trend trên thế giới AI, IoT, VR&AR…
- Được đào tạo chuyên môn và tham gia các khóa học, tương tác nâng cao kỹ năng
- Được tham gia các chương trình training về kỹ năng công nghệ và kỹ năng mềm, phương pháp làm việc (Agile, Scrum…).
- Được tư vấn và chia sẻ về phát triển năng lực và nghề nghiệp bản thân.
- Cơ hội đi đào tạo hoặc công tác trong và ngoài nước
4. Cách thức ứng tuyển
Ứng viên quan tâm vui lòng gửi CV vào email : hrd@hivetech.vn với tiêu đề [HiveTech] Vị trí ứng tuyển _ Họ và Tên
- Published in Recruitment
TEST LEADER/SENIOR TESTER
1. Mô Tả Công Việc
- Phân tích yêu cầu dự án phần mềm, lập kế hoạch test và thiết kế kịch bản test, chuẩn bị dữ liệu test. Căn cứ vào kịch bản test, chạy thử phần mềm, phát hiện lỗi.
- Quản lý và phân tích kết quả test
- Đảm bảo chất lượng sản phẩm hoàn thành đúng design và yêu cầu dự án.
- Nghiên cứu các phương pháp kiểm thử hiệu quả và đề xuất phương pháp thích hợp cho từng nhu cầu cụ thể.
- Quản lý, đào tạo, giúp đỡ các thành viên khác trong team.
2. Yêu Cầu Ứng Viên
Yêu cầu bắt buộc
- Có ít nhất 2 năm kinh nghiệm ở vị trí Tester.
- Kinh nghiệm làm việc với Performance Testing hoặc Security Test hoặc integrated Test
- Nắm vững và vận dụng thành thạo các kỹ năng test.
- Có hiểu biết về quy trình phần mềm.
- Khả năng đọc – hiểu và phân tích yêu cầu dự án.
- Xác định được scope test và công việc cần phải làm.
- Biết sử dụng 1 vài tools quản lý bugs.
- Có khả năng report tình trạng và test độ test trong dự án.
- Yêu thích công việc, ham học hỏi, có tinh thần trách nhiệm cao, tỉ mỉ, cẩn thận.
- Có khả năng xây dựng và giúp đỡ những người mới.
Ưu tiên
- Có khả sử dụng tiếng Anh tốt.
- Ứng viên có kinh nghiệm Test Leader là một lợi thế.
3. Thu Nhập & Quyền Lợi
Quyền lợi
- Mức lương hấp dẫn, tùy thuộc vào kỹ năng và kinh nghiệm (từ 12-25M)
- Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp theo Luật lao động
- Thời gian làm việc: 8h-17h từ thứ 2 đến thứ 6
- Trợ cấp ăn trưa
- Thưởng Tết và cơ chế riêng của công ty
- Khám sức khỏe định kỳ hàng năm tại bệnh viện uy tín.
Tại Sao Bạn Sẽ Yêu Thích Làm Việc Tại Đây
- Làm việc, học hỏi và phát triển cùng đồng nghiệp là những kỹ sư trẻ tài năng, đam mê và có lý tưởng lớn
- Cùng nghiên cứu và thử thách với những công nghệ mới và các hot tech trend trên thế giới AI, IoT, VR&AR…
- Được đào tạo chuyên môn và tham gia các khóa học, tương tác nâng cao kỹ năng
- Được tham gia các chương trình training về kỹ năng công nghệ và kỹ năng mềm, phương pháp làm việc (Agile, Scrum…).
- Được tư vấn và chia sẻ về phát triển năng lực và nghề nghiệp bản thân.
- Cơ hội đi đào tạo hoặc công tác trong và ngoài nước
4. Cách thức ứng tuyển
Ứng viên quan tâm vui lòng gửi CV vào email : hrd@hivetech.vn với tiêu đề [HiveTech] Vị trí ứng tuyển _ Họ và Tên
- Published in Recruitment
Sale dự án công nghệ, dịch vụ, trang thiết bị hạ tầng
1. Mô Tả Công Việc
- Tìm kiếm, khai thác khách hàng mới.
- Tạo lập và phát triển mối quan hệ với khách hàng tiềm năng, chăm sóc khách hàng hiện có của công ty.
- Chuẩn bị và gửi báo giá, telesales, lắng nghe nhu cầu khách hàng, chuẩn bị và theo dõi hợp đồng v.v….
- Tham gia các buổi event, seminar liên quan đến quảng bá, kinh doanh sản phẩm.
- Khảo sát, phân tích & dự báo tình hình khách hàng, thị trường, đề xuất các đối sách cần thiết kịp thời.
- Đi công tác trong và ngoài nước.
- Lập kế hoạch/chiến lược tương tác với khách hàng.
2. Yêu Cầu Ứng Viên
- Có kinh nghiệm làm nhân viên kinh doanh, ưu tiên trong lĩnh vực IT, thiết bị công nghệ, xây dựng.
- Có khả năng giao tiếp mạch lạc, tự tin, có kỹ năng trình bày, kỹ năng đàm phán và kỹ năng tự học hỏi.
- Tính cách hòa đồng, vui vẻ; năng nổ, chủ động trong công việc; không ngại các công việc mang tính lặp lại.
- Ưu tiên những ứng viên có tư duy chủ động, nhạy bén.
3. Quyền Lợi
- Mức lương: 6M-20M + Phần trăm theo dự án
- Thời gian làm việc linh hoạt, theo yêu cầu
- Cơ hội tiếp cận nhiều tệp khách hàng và dự án đa dạng
- Nhiều quỹ thưởng
- Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp theo Luật lao động
- Khám sức khỏe định kỳ hàng năm tại bệnh viện uy tín.
- Được tham gia du lịch, nghỉ mát.
- Có cơ hội thăng tiến cao trong công việc.
4. Cách thức ứng tuyển
Ứng viên quan tâm vui lòng gửi CV vào email : hrd@hivetech.vn với tiêu đề [HiveTech] Vị trí ứng tuyển _ Họ và Tên
- Published in Recruitment
Project Manager
1. Mô Tả Công Việc
- Xây dựng các hồ sơ dự án
- Phân chia công việc, lâp kế hoạch thực hiện dự án phát triển phần mềm
- Quản lý chi phí, kế hoạch, tiến độ, nhân sự, chất lượng, thay đổi, rủi ro, quản lý truyền thông các dự án được giao nhằm triển khai thành công dự án.
- Nghiên cứu, đề xuất áp dụng quy trình QLDA phần mềm
- Thực hiện công tác nghiệm thu, triển khai đưa sản phẩm vào sử dụng
- Tham gia vào việc xây dựng và phát triển Công ty
- Chủ động đề xuất các phương án xử lý chức năng trong dự án
2. Yêu Cầu Ứng Viên
Yêu cầu bắt buộc
- Tốt nghiệp Đại học, Cao đẳng, Trung học chuyên nghiệp ngành Công nghệ thông tin hoặc Quản trị kinh doanh
- Có trách nhiệm, nhiệt huyết với công việc, có khả năng làm việc bền bỉ dưới áp lực cao
- Có kinh nghiệm trên 3 năm quản lý dự án, hiểu biết sâu về waterfall, agile development;
- Có kỹ năng giao tiếp, đàm phán, lập kế hoạch và giải quyết vấn đề
- Có kỹ năng và kiến thức về quản trị dự án phần mềm
- Có khả năng thực hiện phân tích, thiết kế hệ thống phần mềm
- Có khả năng lập trình, nắm vững công cụ quản lý: Microsoft Project, SVN, Jira, Git, Microsoft Office
Ưu tiên
- Có khả sử dụng tiếng Anh tốt.
- Ưu tiên có chứng chỉ PMP, PMF.
3. Thu Nhập & Quyền Lợi
Quyền lợi
- Mức lương hấp dẫn, tùy thuộc vào kỹ năng và kinh nghiệm
- Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp theo Luật lao động
- Thời gian làm việc: 8h-17h từ thứ 2 đến thứ 6
- Trợ cấp ăn trưa
- Thưởng Tết và cơ chế riêng của công ty
- Khám sức khỏe định kỳ hàng năm tại bệnh viện uy tín.
Tại Sao Bạn Sẽ Yêu Thích Làm Việc Tại Đây
- Làm việc, học hỏi và phát triển cùng đồng nghiệp là những kỹ sư trẻ tài năng, đam mê và có lý tưởng lớn
- Cùng nghiên cứu và thử thách với những công nghệ mới và các hot tech trend trên thế giới AI, IoT, VR&AR…
- Được đào tạo chuyên môn và tham gia các khóa học, tương tác nâng cao kỹ năng
- Được tham gia các chương trình training về kỹ năng công nghệ và kỹ năng mềm, phương pháp làm việc (Agile, Scrum…).
- Được tư vấn và chia sẻ về phát triển năng lực và nghề nghiệp bản thân.
- Cơ hội đi đào tạo hoặc công tác trong và ngoài nước
4. Cách thức ứng tuyển
Ứng viên quan tâm vui lòng gửi CV vào email : hrd@hivetech.vn với tiêu đề [HiveTech] Vị trí ứng tuyển _ Họ và Tên
- Published in Recruitment