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
aop modular
Database module
web Refer to the module
Test 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