当程序员应对英文面试的时候,平常吹水的本事就即刻口哑哑了。
下面为各个技术点整理一些简单的英文描述,不至于到时说不出来一句话。
Java
Java is a multiplatform, object-oriented programming language that runs on billions of devices worldwide. It powers applications, smartphone operating systems, enterprise software and many well-known programs. Despite having been invented almost 30 years by James Gosling, currently it is the most popular programming language for app developers.
Spring
Spring is the most popular application development framework,it is open source and has active forum.
It has 2 core ideas : IoC and AOP.
IoC container is responsible for managing object lifecycles of specific objects,when creating these objects, calling their initialization methods and configuring these objects by wiring them together.
AOP just an interceptor to intercept some processes, for example, when a method is execute, it can hijack the executing method, and add extra functionality before or after the method execution,such as transaction management, security, remote access and log management and so on.
SpringBoot
SpringBoot is a lightweight framework and its core design is ‘Convention Over Configuration’. It includes over 50 Spring Starters and many more third-party starters are available. SpringBoot makes development more convenient and makes deployment more easy, so that we can focused on our own business logic.
SpringCloud
Spring Cloud is configuration server technology and communicate with many services and collect in one Application. It has 5 core modules: Netflix Eurek,Netflix Ribbon,Netflix Hystrix,Netflix Zuul and Spring Cloud Config.
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems. (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).
Kafka
Kafka is a publish-subscribe based messaging system and also open-source, three primary capabilities as below:
It enables applications to publish or subscribe to data or event streams.
It stores records accurately (i.e., in the order in which they occurred) in a fault-tolerant and durable way.
It processes records in real-time (as they occur).
Understanding the Differences Between RabbitMQ vs Kafka:
As per my understanding:
RabbitMQ handle 4-10k msg per sec, kafka handle one million msg per sec, it has higher performance.
RabbitMQ and ActiveMQ use clustering and network of brokers approaches to achieve scalability , while Kafka uses partitioning.
Considering business scenarios, data scale, system architecture and other factors:
If you need to process large amounts of data and require high-performance, high-reliability message transmission, you can choose kafka;
If you need to support multiple message protocols and be easy to deploy and use, you can choose rabbitMQ.
If you need to support distributed transactions, data synchronization just choose rocketMq.
ArrayList
ArrayListis uses an array, which allows for fast random access but slow insertion and deletion. thread unsafety.
LinkedList
LinkedList uses a doubly linked list, which allows for fast insertion and deletion but slow query. thread unsafety.
Vertor
Vestor is thread safety because its method has synchronized keyword, but low efficency
Hashmap
Hashmap maintains no order. Structure: array list +linked list + red black tree.
Allows store at most a null key and many null values. thread unsafety
Linkedhashmap
Linkedhashmap maintains insertion order. Structure: array + doubly linked list.
Treemap
Treemap maintains asceding order,cuz it implements sortedmap.Structure: red black tree.
Doesn’t allow a null key but may contain many null values. thread unsafety.
Hashtable
Hashtable is thread safety because its method has synchronized keyword, Structure: array + linked list.
Not allow null key and null values, otherwise will throw Nullpointer exception.
Reflection
Reflection is a feature in Java, it allows us to inspect and manipulate classes, interfaces, constructors, methods, and fields at run time.There exists three ways to create objects of class:
- Using forName () method
- Using getclass () method
- Using .class extension
Multi thread
Multi thread allows two or more instruction threads to execute independently while sharing the same process resources. to programming Multi thread can improve speed
but requires careful programming in order to avoid conflicts caused by race conditions and deadlocks. To prevent race conditions and deadlocks,
we use locks that prevent multiple threads from modifying the value of the same variable at the same time.
How to keep thread safety:
- synchronized keyword - can use on different levels: Code blocks, static methods, Instance methods
- Lock - private Lock lock = new ReentrantLock(true) lock.unlock
Four ways to create the threads
- extends thread class
- implements runnable interface
- implements callable interface
- ThreadPoolExecutor
Microservices
Microservices will divide a single application into many independent projects according to the business function modules,and each project will complete a part of the business functions, and then develop and deploy independently. These independent projects become a micro-service.
Transaction Isolation Level
@Transactional(isolation = Isolation.READ_COMMITTED)
-Read Uncommitted
-Read Committed
-Repeatable Read
-Serializable
Thread Local
ThreadLocal is used to create thread-local variables that can only be read and written by the same thread,many frameworks use threadlocals to maintain some context related to the current thread. For example when the current transaction is stored in a threadlocal, you don’t need to pass it as the parameter through
evert method call. just store infomation about the current request and session in a threadlocal.so that application has easy access to them.
Full GC
a Full GC will be triggered whenever the heap fills up.in such a case the young generation is collected first followed by the old genration.
use command top -HP to check CPU and thread runing status
if the CPU is very high and check the detals of thread by Jstack log. Jstack [process ID]
Garbage Collection Algorithm: Mark-Sweep /copying / Mark-Compact
To Be Continued