Self-taught to enter dafang do senior Java development engineer, wechat search [IT elder brother] attention to this self-taught programmer.

My elder brother sorted out the latest Java interview questions of 2020 from top manufacturers, covering all technical areas of Java. You can get the interview questions when you reply.


As an excellent one-stop mobile travel and lifestyle platform, Didi provides more than 550 million users in Asia, Latin America and Australia with a variety of services, including taxis, express cars, private cars, luxury cars, public transport, surrogate drivers, enterprise, shared bikes, shared motorcycles, car services, food delivery, payment and so on.

On Didi’s platform, tens of millions of car owners and drivers have access to flexible work and income opportunities, and more than 10 billion passengers are transported annually.

During the three years of didi open Source, under the advocacy of Dr. Zhang Wensong, senior Vice President and chairman of Didi Open Source Committee, Didi has upheld the concept of “embracing openness, win-win cooperation and creating value”.

Didi actively participates in open source projects in the industry, and continuously outputs excellent internal projects. Since the release of VirtualAPK, Didi’s first open source project, on June 30, 2017, Didi has released more than 40 projects, which received 6.3W star and received good response from the community. Here’s a quick look at Didi’s 40+ open source project. (in alphabetical order)

Artificial Intelligence


AoE, named after AI on Edge, is a terminal side AI integrated runtime environment (IRE).

AoE is designed with the principles of “stability, ease of use, and security” to help developers easily deploy deep learning algorithms from different frameworks to the terminal for efficient execution.



Athena is an open source implementation of an end-to-end automatic speech recognition (ASR) engine.

Currently, the project supports training and decoding of connector time classification (CTC) -based models, transformer-based codec models and hybrid CTC/attention-based models as well as unsupervised pre-conversion based on MPC.

Our vision is to enhance the end-to-end model of speech recognition for industrial applications and academic research. To make ASR available to everyone, we’ve also released some sample implementations based on open source data sets,

For example HKSUT, Librispeech all of our models are implemented in Tensorflow> = 2.0.0.


Chinese NLP

Chinese natural language processing (NLP) related links: data sets and latest results.



DELTA is a deep learning-based model platform for speech and natural language understanding. It aims to create an industry-level model framework for speech and natural language understanding that is easy to use, simple to launch, and fast to develop.



DLFlow is a deep learning pipeline that combines Spark’s large-scale feature processing capabilities with Tensorflow’s model building capabilities.

DLFlow can be used to quickly process original features, train models and make large-scale distributed predictions, which is very suitable for off-line production tasks.



AAAI’20 paper in HetSANN source code: Heterogeneous Structure learning attention-based Graph Neural Networks.



To further help resist the Novel Coronavirus, Didi Chuxing has decided to make its mask detection technology freely available to the public.

The mask detection technology developed by the DiDi AI team is based on the DFS face detection algorithm, and DiDi uses the face attribute recognition algorithm on its platform.

The model overcomes some difficulties, such as complex light changes during the day, facial posture changes, facial proportions, etc. It uses the weighted loss function and data enhancement methods to deal with different mask types and uneven mask data during the day and night.

The system can identify non-masked drivers using uploaded images with 99.5% accuracy and 98% accuracy in the DiDi on-board camera field inspection.

The model was trained on a data set of 200,000 faces to ensure its robustness.

The rapid detection system can be used in a wide range of travel scenarios, including cell phone photos, surveillance images and more, and can work 24/7.



Based on the requirements of common business scenarios within the company, Didi DS Statistical science team and ANT Financial SQLFlow initial RESEARCH and development team cooperate in an all-round way from the perspective of model, community and culture. The two sides have complementary capabilities and strong resource synergy, aiming to promote and realize the use of AI as long as they understand business logic, so that even the most business-savvy people can use AI without obstacles.


The field of Intelligent Transportation


ALITA (A Layered Instrument To Analyze) is A Layered presentation data analysis tool produced by Xiaoju Auto Data Department.

Through a large number of business requirements, we precipitate and abstract the generic “point”, “line”, “surface” three data models, and map rich design elements of the point, line, surface perfect integration, design and package the front and rear end of the common modular components, to achieve rapid construction of map applications.



AI City Challenge 2019 Track1, MTMC Vehicle Tracking



TTI is a widely used evaluation index of urban congestion degree in the industry. It reflects the ratio between the actual travel time spent and the free flow travel time spent. The greater the value, the worse the traffic running state.

There is generally a positive correlation with the degree of congestion. Other factors such as abnormal weather (rain, snow, fog, etc.) or abnormal road conditions may also have an impact on TTI values.


3. Middleware and architecture areas


Booster is an easy-to-use, lightweight, and scalable quality optimization framework designed specifically for mobile applications that provides scalable capabilities through dynamic discovery and loading mechanisms.

It is more than just a framework. It has a rich set of quality optimization tools built in.



DDMQ is a message queue product built by Didi Chuxing Architecture Department based on Apache RocketMQ.

As a distributed messaging middleware, DDMQ provides low-latency, high-concurrency, high-availability and high-reliability messaging services for didi Chuxing’s various business lines.

DDMQ provides multiple message types including real-time messages, delayed messages, and transactional messages to meet different business requirements.

Users can easily access DDMQ to produce and consume messages through a unified Web console and a foolproof SDK, and experience rich and stable message services.



The vision for Go-Spring is to make a programming framework as powerful as Java Spring available to GoLang programmers.

Features: Provide a complete IoC container, support dependency injection, property binding; Provide a powerful launcher framework, support automatic assembly, out of the box;

Provides an abstraction layer for common components, enabling flexible replacement of the underlying implementation; Go-spring currently uses Go1.12 for development and Go Modules for dependency management.


Big Data


Es-fastloader is a Build & Push mechanism that can quickly generate indexes for massive offline data.

With the powerful parallel computing capability of Hadoop, tens of terabytes of data can be constructed very quickly in 1-2 hours.

To solve the problem of low construction time of index file when constructing ES with massive data.



Levin is a fast loading solution for low frequency updates, static usage, and large amounts of data.

Levin implemented a set of STL-like containers on SHM shared memory fragments to efficiently host large static data, accelerating cold start and hot load of large memory services.

It has the advantages of simple and easy to use, high efficiency, good performance and memory saving.


5. Operation, maintenance and monitoring


Elastic – trib is an Elasticsearch cluster management command line tools, for management within the company more than 30 Elasticsearch cluster.

It can be integrated into shell scripts and used to control clusters through command line terminals.

Project didi/elastic-trib


Falcon-log-agent is an open source log collection tool designed to capture features from streaming logs.

The obtained characteristic information was connected with the Open source version open-Falcon monitoring system.

It can be used to measure business metrics, and it can be used to build stability.



One-stop Apache Kafka cluster indicator monitoring, operation and maintenance management and control platform.



Nightingale is an enterprise-level monitoring solution developed and open source by Didi Basic Platform and Didi Cloud. It is designed to meet enterprise-level monitoring requirements in the cloud native era.

Nightingale meets enterprise level requirements in terms of product completion, high availability of systems, and user experience.

Can meet the different scale of user scenarios, small to a few machines, large to hundreds of thousands of can be perfectly supported.

It supports application monitoring and system monitoring with flexible plug-in mechanism, rich and perfect plug-ins, and has a high degree of flexibility and extensibility.



This process is used in Didi Cloud to manage other agents on the machine, such as monitoring agent and security agent.

Management is mainly: installation, upgrade, uninstallation, check startup status, and do nothing else. Save the customer manual installation of other agents.


6. Small programs


CML, as a real framework for allowing a set of code to run multiple terminals, provides standard MVVM mode and unified development of various terminals.

At the same time, it has independent runtime framework (Runtime), data management (Store), component library (UI), interface (API).

In addition, CML has done a lot of work on cross-end capability strengthening, capability unification, performance consistency and so on.



Mpx is an enhanced applet framework that aims to improve the experience and efficiency of small program development. With Mpx, we can efficiently and gracefully develop high quality applet applications with extreme performance, and output them to run on various application platforms, large and small, and web platforms.


Mobile development


Echo is a simple and easy to use, plugins are easy to expand, large screen display and operation of debugging tools, aimed at improving the efficiency of mobile terminal development and debugging.

Based on some existing problems and team needs, we developed a desktop debugging tool Echo, which can help us to view all kinds of App data (network request, log, burying point, etc.) in real time, and can also quickly modify and debug the UI effect of the App without changing the code, so as to improve our development and debugging efficiency.



DoKit for short, or Doraemon in Chinese, means to be able to provide his owner with A variety of tools like Doraemon.

Is a fully functional client (iOS, Android) RESEARCH and development assistant. The ability to quickly connect each App to common development AIDS, test efficiency tools, and visual AIDS that you may not have implemented.

In addition, it can perfectly access some non-general auxiliary tools that you have implemented and tightly coupled with the business in the Doraemon panel, and match with our DoKit platform, so that functions can be extended, easy to access, and easy to expand.



DroidAssist is a lightweight Android bytecode editing plug-in that dynamically changes class files with a simple configuration in XML.



VirtualAPK is an excellent plug-in framework developed by Didi Chuxing. It can update plug-ins at any time to release new functions and has the ability to release versions at any time by plug-ins of business modules.

This plug-in framework can help enterprises release new functions by updating plug-ins at any time, including repairing serious Crash or conducting business “trial and error”. It has four core advantages: complete functions, basically no intrusion, easy access to host code and resources by plug-ins, and high compatibility.


System tools


The Collection package is intended to be used to replace Golang’s native Slice in a number of scenarios that do not aim for extreme performance, but for business development efficiency.

Collection Currently supports the following elements: int, INT64, FLOAT32, FLOAT64, String, struct.



GateKeeper is an API gateway written by Go (Golang) that does not rely on a distributed database. Using it, you can effectively proxy services and configure services online without having to restart the server.



Gendry is a Go package for assisting with database operations. Based on go-SQL-driver /mysql, it provides a series of methods to prepare parameters for your calls to methods in the standard database/ SQL library.



JuShaTa is a Java container that provides module isolation and module hot loading capabilities. We provide a Java JuShaTa container similar to Tomcat, in which each SpringBoot service is a separate module.

By using custom classloaders, different modules use different Classloaders to load the jar packages. Use Spring Context isolation, one Context per module, to resolve bean conflicts.



An open source before-and-after callback based framework for macOS kernel monitoring. Kemon is a kernel monitoring framework based on macOS, kernel monitoring on Windows has a good foundation.

However, there is no mature hook framework on the Mac to track the generation of more process kernel events. Kemon further improved the macOS kernel and contributed to the improvement of kernel security.



SDS (Service downgraded System) is a lightweight, simple and easy to use current-limiting, circuit breaker and Downgrade System. It will enable Java applications to achieve automatic current-limiting, circuit breaker and rapid recovery, and improve the overall “elasticity” of applications.

Nowadays, the server adopts the popular microservice architecture to cope with the complex and large traffic scenarios, and can still achieve strong rapid iteration and scalability in the rapid development of the business.

Micro service architecture is not the whole system will be more simple, on the contrary, micro service architecture management difficulty is higher than the ordinary centralized architecture, so, how to ensure that the system of each node in a complex environment can provide the service stability, need to use tools to make service node can resist the traffic impact, fusing dependence bad points.



Tinyid is a distributed ID generation system developed in Java. It is implemented based on the database number segment algorithm. For this algorithm, you can refer to the principle introduction of Meituan Leaf or Tinyid.

Tinyid extends the Leaf-segment algorithm to support multiple DB (master), and provides a Java-Client (SDK) to localize ID generation, achieving better performance and availability.

Tinyid is used in the customer service department of Didi. It is accessed through the tinyId-client method and generates hundreds of millions of ids every day.


The front end


Excellent mobile UI library tools built by Vue. The technology is characterized by reliable quality, extreme experience, standard specification and strong scalability, and has a unique post-compilation technical solution to help optimize performance significantly.

The goal of cub-UI is to make mobile development easier, to make developers more focused on business logic development, and to improve r&d efficiency.



Di18n is an automatically converted, configuration-based front-end internationalization solution. It can automatically scan the Chinese copy in the code and replace it with internationalization tags. At the same time, the language is extracted into the configuration, which can be saved and updated on the server.



Epage is a Schema-based visual page configuration tool. Abstract from the workorder system process form scenario, upgrade to support cross-frame, component library rendering, customizable general page configuration tool. Often used in process form, background page configuration.


Mand Mobile

Mand Mobile offers 30+ utility components that meet most of the requirements for Mobile page development. The business components are also targeted at the financial field, including charts, numeric keyboards, etc., so as to better meet the development needs of related products.


Mand Mobile-RN

Mand Mobile RN is short for Mand Mobile for React Native. The React Native component library of the Mand Mobile family focuses on the financial scene while providing components and solutions that are unique to RN projects to improve the development efficiency and UI experience of cross-end projects.



Lightweight mobile component library built using React. Design, front-end efficient collaboration, fast building of mobile terminal component library.



Tips is a static copymanagement platform. Used to modify static copywriting of Web pages, support internationalization of copywriting, and provide UI display of prompt messages.

Its purpose is to solve the problem of frequent static copy modification by front-end developers and to avoid the complex launch process due to simple copy modification.


Research and development testing


Benchmarking-thrift is a tool for testing the performance of Thrift applications, out of the box, efficiently and simply.



Rdebug is an open source utility tool of Didi for RD research and development, self-test and debugging. It can be used to improve RD research and development efficiency, ensure code quality and reduce online accidents.



Sharingan is a golang-based traffic recording and playback tool, recording line real request traffic playback test, suitable for project refactoring, regression testing, etc.

With the rise of microservice architecture, the dependency between services becomes more and more complex. Frequent system upgrades lead to high cost of maintaining test cases, and it is difficult to provide a stable test environment depending on numerous downstream services. Therefore, we developed this set of tools to alleviate the above problems.



Thrift – Mock is a lightweight Java test tool for simulating Thrift services. Through it, you can mock the dependent Thrift service interface easily and get the specified interface return, which greatly improves the development efficiency in the debugging and testing phases.


Source: Didi Technology produced