Analysis of Senior Linux Development Position at Hikvision

Analysis of Senior Linux Development Position at Hikvision

Table of Contents

  • 1. Job Introduction
  • 2. Analysis
    • 2.1. Mastering Debugging Tools
    • 2.2. Knowledge of Block Devices
  • 3. Resume Suggestions

Consolidate, share, and grow, so that both you and others can gain something! 😄

📢 In this article, we will analyze the <span>Linux</span> development engineer position at Hikvision.

Last day of the knowledge base activity promotion.

Complete Linux knowledge base:

Embedded Linux driver development learning path from zero to employment.

Analysis of Senior Linux Development Position at Hikvision

1. Job Introduction

Location: Shanghai

Job Responsibilities:

  1. Responsible for the development and maintenance of Linux kernel drivers.
  2. Responsible for communication, analysis, and design of product requirements.

Qualifications:

  1. Bachelor’s degree or above, with 5 years or more of work experience;
  2. Familiar with the Linux operating system, proficient in shell scripting, and able to use code management tools like SVN proficiently.
  3. Proficient in C/C++ programming.
  4. Expert in debugging methods for applications under Linux, and proficient in using debugging tools (gdb, crash, systemtap, etc.) under Linux.
  5. Expert in Linux kernel and driver development, with experience in maintaining and developing kernels and kernel modules.
  6. Proficient in knowledge related to block devices under Linux (RAID, DM, block) is preferred.
  7. More than 3 years of experience in Linux kernel work is preferred.
  8. Good communication skills, ability to work under pressure, and team collaboration awareness.
  9. Strong learning ability and logical thinking ability.

2. Analysis

We extract useful information from the above:

2.1. Mastering Debugging Tools

Debugging tools under Linux

  • gdb:
  • crash
  • systemtap

These tools are powerful for debugging and troubleshooting in the Linux environment, each with its specific uses and advantages.

  • GDB (GNU Debugger): GDB is a powerful source-level debugger for debugging programs written in C, C++, and other programming languages. It allows developers to view variables, inspect memory, trace code execution flow, and help identify errors and issues in the program during runtime. GDB provides a command-line interface, and there are some graphical front-ends available as well.

  • Crash: Crash is a tool for analyzing Linux kernel core dump files. When the Linux operating system encounters a severe error that causes a system crash, a core dump file is generated, containing the memory state, register values, and other information at the time of the crash. The Crash tool allows developers to analyze these core dump files to understand the cause of the crash, locate the problem, and troubleshoot.

  • SystemTap: SystemTap is a dynamic system tracing tool that allows developers to insert specific probes into the Linux system to collect various system-level information for performance analysis, debugging, and monitoring. Using SystemTap, scripts similar to C programs can be written to capture runtime information, which is useful for analyzing performance issues, debugging code, or monitoring system status.

These tools play different roles in various scenarios. For example, during development, you might use GDB for step-by-step debugging; when a system issue arises, you would use the Crash tool to analyze core dump files to find the problem; and for performance analysis or system-level tracing, SystemTap may be more useful.

In Linux kernel development, driver development, or system debugging, these tools are often essential as they provide developers with the ability to analyze and diagnose system issues in depth.

In addition to the above, what else do we need to possess:Analysis of Senior Linux Development Position at Hikvision

2.2. Knowledge of Block Devices

  • RAID: Need to understand the working principles of different levels of RAID (such as RAID 0, 1, 5, 6, 10, etc.), data striping, data redundancy, performance, and fault tolerance characteristics. Understand the configuration, management, and fault handling of RAID in Linux systems.

  • Device Mapper (DM): Need to be familiar with the Device Mapper framework in the Linux kernel, including its applications in creating logical volume management (LVM), encrypted devices, snapshots, and mirroring. Gain a deep understanding of DM’s role in block device management and abstraction.

  • Block Devices: Have a deep understanding of the concept, working principles, and how the operating system manages block devices, as well as their relationship with file systems. Understand the operation and management of block devices at both hardware and software levels, as well as their implementation and management in the Linux kernel.

This requirement means that candidates need to be capable of effectively handling and managing block devices in a Linux environment, whether it is a single device or complex storage solutions (such as RAID), and be able to deal with failures, optimize performance, and perform configuration and management. This is a very important skill for those engaged in system management, storage solution development, file system development, or kernel driver development.

3. Resume Suggestions

It can be concluded that this position involves Linux work related to block devices:

Our resume needs to focus on describing block devices:

For handling block devices, especially in a Linux environment, the following skills and knowledge are required:

  1. Understanding of Operating Systems and File Systems: Understand how the operating system manages and handles block devices, including initialization, mounting, reading and writing, and unmounting operations for block devices. Familiarity with common file systems (such as ext4, XFS, NTFS, etc.), understanding their relationship with block devices, and how to create and manage file systems on block devices.
  2. Device Management and Configuration: Familiarity with device management tools, able to identify, manage, and configure block devices, such as fdisk, parted, or lsblk command-line tools. Understand the concepts, sizes, partitioning, and formatting of block devices.
  3. RAID and Storage Technologies: Understand different levels of RAID, able to configure and manage RAID systems. Familiarity with the concepts of storage technologies, including data striping, redundancy, performance, and fault tolerance, as well as how to configure and manage these storage technologies in Linux.
  4. Kernel and Driver Development: Have a certain understanding of the Linux kernel, know how to compile and configure the kernel to support block devices and corresponding drivers. Familiarity with the Device Mapper framework and block device driver development.
  5. Troubleshooting and Performance Optimization: Able to identify and resolve block device failures, understand and apply troubleshooting tools. Optimize the performance of block devices, understand how to adjust parameters, configure, and manage to improve performance.

Leave a Comment