cd card 2022-02-13 07:59:30 阅读数:573
1、Redis What to do if the cache space is full ？
answer ：Redis There is a corresponding elimination mechanism in , Used to deal with insufficient cache space , We just need to make reasonable configuration .
Generally, we are caching data to redis You can set the expiration time of the cache , Lest the data in the cache keep growing . But we still have to consider special circumstances , When the cache is full , But the expiration time we set hasn't come yet , At this time, if the cache space is not processed , Memory overflow will occur .redis Specialized secondary schools have an elimination mechanism for this situation .
1、lru Eliminate the earliest accessed data -- In the form of a linked list , The earliest accessed data is placed in the chain header , The newly accessed data is placed at the end of the linked list , When there is not enough memory , First delete the data in the head of the linked list .
2、lfu Eliminate the data with the lowest access rate -- How to ensure that access is not affected by new and old data ？--redis A timestamp and counter are set for each new data , Only when the counter reaches a certain value , Or after a certain time , This new data will be compared with other old data . And the of the counter is over time , If there is no access, the counter will gradually decay .
3、 To be eliminated at random -- Randomly select a part of the data and delete it , Generally do not use
2、servlet Life cycle of ？
answer ： initialization ： load servlet class , And call init（）
Use stage ： call service（） Method ,
Closing phase ： call destory（） Method , here servlet Will wait for jvm The garbage collection of
3、 Class in jvm Life cycle in ？
answer ： load ：jvm Load bytecode file
Connect ： There are three steps
verification ： Check whether the class loaded by bytecode file conforms to jvm Specification of classes .
Get ready ： Is a static variable , The static method divides the static area in the method area , And assign the initial value to the static variable , The integer is 0, The character type is null, Boolean is false
analysis ： Convert symbolic references to direct references , Is to assign the address value to the corresponding reference object
initialization ： Initialize and assign the variables in the class , The assignment at this time is to assign the quantity defined in the class to the variable
Use ： Define the object , To use
uninstall ： After the class has no reference jvm Garbage collection
4、 How to optimize search ？
answer ： By default, the search at this time obtains the data results through traversal
1、 You can refer to elasticSearch Operations on data in , Create a class , The inverted index method is used to store all data in it , When searching, use this class to query .
2、 You can also make the data in the form of binary tree , When querying , It will also be faster to find data in the double binary tree
5、hashmap and hashtable The difference between ？
answer ：1、hashMap It's not thread safe ,hashtable It's thread safe
2、hashmap in key,value It can be for null,hashtable Not in the middle
3、hashmap and hashtable The inherited parent class is different , And hashtable Inherited parent classes and are obsolete
6、 The life cycle of a thread ？
answer ： Freshmen -- be ready -- function --（ Blocking ）-- Death
7、 What are the status of threads , And how to achieve this state ？
answer ： be ready ： call start（） When the method is used , The thread enters the thread pool and waits cpu Call to
function ：cpu Allocate time slices to corresponding threads
Blocking ： Blocking can also be called waiting state
Finite waiting state ：sleep（timeout） wait（timeout） join（timeout）
Waiting indefinitely ：wait（） join（）
wait（） If you don't define time , Will always be in a waiting state , Until another thread passes notify（）/notifyAll（） Method to wake it up .
join（） If the expiration time is not set , Will always carry out wait（0） Methods , Until the thread dies .
Death ： When the thread ends, it will die automatically
8、wait（） and sleep（） Differences in methods ：
answer ：wait（） yes Object Methods .sleep（） yes Thread Class method
call wait（） When the method is used , The thread will release cpu resources , Until it is notify Method wake up ,sleep（） Method does not release resources when called , Wait until the end of sleep time to continue
9、 Features of thread pool ？
answer ： We usually use ThreadPoolExcuter To create a thread pool
When threads are not used much , The core thread is used by default , The number of tasks has increased , Not enough core threads , It will gradually expand to the maximum number of threads , If the number of tasks is still increasing , The thread is fully loaded , The waiting line is full . The reject policy is triggered , Just don't continue to receive tasks . When the number of tasks decreases , In addition to the core thread , The rest of the threads will wait for a while , Post death .
10、 How to deal with the result set returned by the database ？
answer ： The explanation here is springboot,mybatisplus The situation of
First, create a class with the same type as that in the access result and a corresponding dao class , Then make the class accessing the database inherit mybatisplus Medium ServiceImpl class , And will ServiceImpl The genericity of is set to <dao class , Class name >.ServiceImpl Through id Or get the result set through the filter , The resulting set is a collection of previously established classes .
11、spring What are the core modules of ？
answer ：iop Container module
web Refer to the module
12、Redis Cache penetration , Cache breakdown , What does cache avalanche mean and how to solve it
answer ： Cache penetration ： Access data that does not exist in the database , Under normal circumstances, if there is no data in the query database , return null No, put the results in the cache , This causes each query to access the database once .
terms of settlement ：1、 Using the bloon filter 2、 Cache returned null data
Cache breakdown ： Access a piece of data existing in the database , And the concurrency of this access is very large , Cache breakdown occurs in redis Of this data in key When it expires , A large number of concurrent accesses to the database at the same time , Cause the server to crash .
terms of settlement ： Use mutex , When value When the value is empty, it is not for us to access the database , But through redis Self contained setnex （set if not exit） To load the corresponding key,value. When the return result is true when , Indicates that the corresponding data in the database has been cached to redis Yes , Large concurrent data is accessed at this time redis The data in
Cache avalanche ： Different data access , There's a lot of concurrency , If redis in key Expire at the same time , It will also cause a large amount of data to directly access the database ,
terms of settlement ：1、 Decentralized cache expiration time 2、 You can set the hotspot data to never expire
Explain it in advance , These are my interview questions. They are all the answers I found online , Combined with my own words to understand , Not necessarily right , Mainly as my personal summary .
copyright：author[cd card]，Please bring the original link to reprint, thank you. https://en.javamana.com/2022/02/202202130759254535.html