编程知识 cdmana.com

Document de développement Android chinois, introduction au Tutoriel de développement Android

1、javaMoyenne==EtequalsEthashCodeLa différence entre
Type de données de baseLes valeurs comparées sont égales.
Classe
Adresse de la mémoire comparée,C'est - à - dire si c'est le même objet,Non couvertequalsDans le cas de,Comparer les adresses mémoire avec,L'implémentation originale est également == ,Par exemple:StringAttendez la réécriture.equalsMéthodes.
hashCodeC'est aussiObjectUne méthode pour la classe.Renvoie un discretintType entier.Utilisé dans les opérations de classe set,Pour accélérer la requête.(HashMap,HashSetSi la comparaison est la même)
Si deux objetsequals,JavaL'environnement d'exécution pensera qu'ilshashcodeÇa doit être égal.
Si les deux objets ne sont pasequals,La leur.hashcodeC'est possible d'être égal.
Si deux objetshashcodeÉquivalence,Ils n'ont pas àequals.
Si deux objetshashcodePas égal,Ils ne doivent pasequals.

2、intAvecintegerLa différence entre
int Type de base
integer Objet intClasse d'emballage pour

3、String、StringBuffer、StringBuilderLa différence
String:Constante de chaîne Ne s'applique pas aux situations qui valent souvent la peine d'être modifiées,Chaque changement équivaut à générer un nouvel objet
StringBuffer:Variable de chaîne (Sécurité des fils)
StringBuilder:Variable de chaîne(Thread Unsafe) Assurez - vous qu'il est disponible sous un seul thread,Un peu plus efficaceStringBuffer

4、Qu'est - ce qu'une classe interne?Rôle des classes internes
Les classes internes accèdent directement aux propriétés des classes externes
JavaLes classes internes moyennes sont principalement divisées en classes internes des membres.、Classe interne locale(Imbriqué dans la méthode et la portée)、Classe interne anonyme(Pas de méthode de construction)、Classe interne statique(staticClasse modifiée,Vous ne pouvez pas utiliser les non - classes de n'importe quelle classe périphériquestaticVariables et méthodes des membres, Ne dépend pas des classes périphériques)

5、La différence entre un processus et un thread
Le processus estcpuUnit é minimale d'allocation des ressources,Le thread estcpuUnit é minimale de répartition.
Impossible de partager les ressources entre les processus,Les Threads partagent l'espace d'adresse et d'autres ressources du processus.
Il peut y avoir plusieurs fils dans un processus,Le processus peut démarrer le processus,Les fils peuvent également être allumés.
Un thread ne peut appartenir qu'à un seul processus,Les Threads peuvent utiliser directement les ressources du même processus,Les Threads existent en fonction du processus.

6、final,finally,finalizeLa différence entre
final:Classe de modification、Variables des membres et méthodes des membres,Classe non héréditaire,Variable membre immuable,Les méthodes des membres ne peuvent pas être dépassées
finally:Avectry…catch…Utilisation commune,Assurez - vous qu'une exception peut être invoquée à
finalize:Méthode de la classe,Cette méthode est appelée avant la collecte des ordures,Les sous - classes peuvent être réécritesfinalize()Méthode de récupération des ressources

7、Serializable EtParcelable La différence entre
Serializable Java Interface de sérialisation Lire et écrire sur le disque dur Il y a beaucoup de variables temporaires générées pendant la lecture et l'écriture,Exécution internei/oFonctionnement,Très inefficace.
Parcelable Android Interface de sérialisation Efficacité élevée Problèmes d'utilisation Lire et écrire en mémoire(ASIl y a des plug - ins associés Une clé pour générer la méthode requise) ,L'objet ne peut pas être sauvegardé sur le disque

8、Les propriétés statiques et les méthodes statiques peuvent - elles être héritées??Peut être écrasé?Et pourquoi?
Héréditaire Non réécrit C'est caché.
Si les méthodes et attributs statiques sont définis dans la Sous - classe,La méthode statique ou l'attribut de la classe mère est alors appelé"Cacher".Si vous voulez appeler les méthodes statiques et les propriétés de la classe mère,Directement par le nom de la classe mère.Méthode ou nom de la variable terminée.

9、Classe interne des membres、Classe interne statique、Compréhension des classes internes locales et anonymes,Et les applications dans les projets
javaLes classes internes moyennes sont principalement divisées en classes internes des membres.、Classe interne locale(Imbriqué dans la méthode et la portée)、Classe interne anonyme(Pas de méthode de construction)、Classe interne statique(staticClasse modifiée,Vous ne pouvez pas utiliser les non - classes de n'importe quelle classe périphériquestaticVariables et méthodes des membres, Ne dépend pas des classes périphériques)
La raison la plus attrayante d'utiliser des classes internes est:Chaque classe interne hérite d'une(Interface)Réalisation,Donc, que la classe périphérique ait hérité ou non(Interface)Réalisation,Aucun effet sur les classes internes.
Parce queJavaPlusieurs héritages ne sont pas pris en charge,Prise en charge de plusieurs interfaces.Mais il y a parfois des problèmes difficiles à résoudre avec l'interface,À ce stade, nous pouvons utiliser les classes internes pour fournir、La capacité d'hériter de plusieurs classes spécifiques ou abstraites pour résoudre ces problèmes de programmation.On peut dire ça.,L'interface ne résout qu'une partie du problème,Les classes internes rendent la solution Multi - héritage plus complète.

10、string Convertir en integerMéthodes et principes
String ?integer Intrger.parseInt(string);
Integer?string Integer.toString();
11、Dans quels cas les objets sont - ils éliminés par le mécanisme de collecte des ordures??
1.Aucune instance n'a accès au thread actif.
2.Une instance de référence circulaire qui n'est accessible par aucune autre instance.
3.Java Il existe différents types de références dans.La question de savoir si une instance est admissible à la collecte des ordures dépend de son type de référence..
Pour déterminer quel objet est inutile.Il y en a ici.2Une façon de:
1.Méthode de comptage des étiquettes:
Marquer les objets en mémoire,Objet référencé une fois,Compte plus1,Référence publiée,Moins un.,Quand ce nombre est0Quand,Cet objet peut être recyclé.Bien sûr.,Et ça pose un problème.:L'objet référencé par la boucle n'est pas reconnu et recyclé.Il y a donc une deuxième approche.:
2.Algorithme de recherche racine:
En partant d'une racine,Rechercher tous les objets accessibles,Les objets restants doivent être recyclés.

12、Différences entre les agents statiques et dynamiques,Quel scénario utiliser?
Classe de proxy statique:
Code source créé par un programmeur ou généré automatiquement par un outil spécifique,Puis compilez - le..Avant l'exécution du programme,Proxy class.classLe fichier existe déjà.Classe de proxy dynamique:Au moment de l'exécution du programme,Créé dynamiquement à l'aide d'un mécanisme de réflexion.

14、JavaQuels sont les mécanismes de polymorphisme??
Réponse:Réécriture de la méthodeOverridingEt surchargeOverloading- Oui.JavaDifférentes manifestations du Polymorphisme
RéécritureOverridingEst une représentation du polymorphisme entre les parents et les enfants
SurchargeOverloadingEst une représentation du polymorphisme dans une classe.

16、Dis - moi que tu as raison.JavaCompréhension de la réflexion
JAVALe mécanisme de réflexion est en état de fonctionnement, Pour n'importe quelle classe, Est capable de connaître toutes les propriétés et méthodes de cette classe; Pour n'importe quel objet, Peut invoquer l'une de ses méthodes et propriétés. De l'objet,Par réflexion(ClassCatégorie)Vous pouvez obtenir des informations complètes sur la classe get(Nom de la classe ClassType,Le sac.、Toutes les méthodes disponibles Method[]Type、Informations complètes sur une méthode(Y compris les modificateurs、Type de valeur de retour、Anomalie、Type de paramètre)、Toutes les propriétés Field[]、Informations complètes sur un attribut、Constructeur Constructors),Un résumé de la propriété ou de la méthode de la classe d'appel: Obtenir la classe en cours d'exécution、Objet、Toutes les informations sur la méthode.

17、Dis - moi que tu as raison.JavaInterprétation des notes
Méta - Annotation
Le rôle de la méta - Annotation est d'annoter d'autres annotations.java5.0Quand,Défini4Standardmeta-annotationType,Ils sont utilisés pour fournir une description des types d'autres annotations.

[email protected]
[email protected]
[email protected]
[email protected]
18、JavaMoyenneStringComprendre
Dans le code sourcestringC'est avecfinal Modifier,C'est immuable.,Constante non héréditaire.

19、StringPourquoi concevoir comme immuable?
1、Exigences relatives au pool de chaînes
Le pool de chaînes est une zone de méthode(Method Area)Une zone de stockage spéciale dans.Lorsqu'une chaîne a été créée et qu'elle est Pool Moyenne,La référence à la chaîne est immédiatement retournée à la variable,Au lieu de recréer une chaîne et de renvoyer la référence à la variable.Si la chaîne n'est pas immuable,Alors changez une référence(Par exemple:: string2)La chaîne pour provoque une autre référence(Par exemple:: string1)Données sales.
2、Autoriser le hachage du cache de chaînes
InjavaLe Code de hachage de la chaîne est souvent utilisé,Par exemple: HashMap .StringL'Invariance garantit que le Code de hachage est toujours un,Donc,,Il n'a pas à s'inquiéter du changement.. Cela signifie qu'il n'est pas nécessaire de recalculer le Code de hachage à chaque fois qu'il est utilisé——Voilà.,Ce serait beaucoup plus efficace..
3、Sécurité
StringLargement utiliséjava Paramètres de la classe,Par exemple::Connexion au réseau(Network connetion),Ouvrir le fichier(opening files )Attendez un peu!.SiStringPas immuable.,Connexion au réseau、Le fichier sera modifié——Cela pourrait entraîner une série de menaces à la sécurité.On pensait qu'une machine était connectée.,Mais pas vraiment..Parce que tous les paramètres de la réflexion sont des chaînes,Encore une fois,Il peut également causer une série de problèmes de sécurité.

20、ObjectClasseequalEthashCodeMéthode de réécriture,Pourquoi?
Tout d'abord,equalsAvechashcodeC'est la relation.:
1、Si les deux objets sont identiques(Prêt à l'emploiequalsComparer les retourstrue),Alors c'est leurhashCodeLa valeur doit être la même;
2、Si deux objetshashCodeMême chose.,Ils ne sont pas nécessairement les mêmes.(Prêt à l'emploiequalsComparer les retoursfalse)
Parce qu'il a été réalisé pour améliorer l'efficacité du programmehashcodeMéthodes,D'abordhashcodeComparaison,Si c'est différent,Non, pas besoin.equalsComparaison,Cela réduit considérablementequalsNombre de comparaisons,C'est une augmentation significative de l'efficacité par rapport au nombre de comparaisons nécessaires.

21、List,Set,MapLa différence entre
SetEst la collection la plus simple.Les objets de la collection ne sont pas triés de manière spécifique,Et aucun objet dupliqué. SetL'interface implémente principalement deux classes d'implémentation:HashSet: HashSetLa classe accède aux objets de la collection par algorithme de hachage,Accès rapide
TreeSet :TreeSetClasse implémentéeSortedSetInterface,Possibilité de trier les objets dans une collection.
ListEst caractérisé par le stockage linéaire de ses éléments,Les objets dupliqués peuvent être stockés dans la collection.
ArrayList() : Représente un tableau dont la longueur peut être modifiée.Accès aléatoire aux éléments,VersArrayList()Insertion et suppression lentes des éléments.
LinkedList(): La structure des données de la liste de liens est adoptée dans la mise en œuvre.Insertion et suppression rapides,Accès lent.
Map Est une collection de cartes d'objets clés et de valeurs,Chacun de ses éléments contient une paire d'objets clés et de valeurs. MapNon hérité deCollectionInterface DeMapLors de la récupération d'éléments dans une collection,Il suffit de donner l'objet clé,Renvoie l'objet de valeur correspondant.
HashMap:MapMise en œuvre basée sur le hachage.Insertion et interrogation“Paire de clés”Les frais généraux sont fixes.La capacité peut être définie par le constructeurcapacityEt facteur de chargeload factor,Pour ajuster les performances du conteneur.
LinkedHashMap: Similaire àHashMap,Mais quand l'itération le traverse,,Accès“Paire de clés”Dans l'ordre dans lequel il est inséré,Ou le moins utilisé récemment(LRU)Ordre.Juste plus queHashMapPlus lentement.Plus rapide lors de l'accès itératif,Parce qu'il utilise une liste liée pour maintenir l'ordre interne.
TreeMap : Mise en œuvre de la structure des données basée sur l'arbre Rouge et noir.Voir“Clé”Ou“Paire de clés”Heure,Ils seront triés(Ordre établi parComparabelOuComparatorDécide que).TreeMapLes caractéristiques de À,Les résultats que vous obtenez sont triés.TreeMapEst le seul avecsubMap()MéthodeMap,Il peut renvoyer un sous - arbre.
WeakHashMao :Faible liaison(weak key)Map,MapLes objets utilisés dans sont également autorisés à être libérés: Conçu pour résoudre des problèmes particuliers.Si ce n'est pas le casmapLes références externes pointent vers“Clé”,Alors...“Clé”Peut être recyclé par le collecteur d'ordures.

26、ArrayMapEtHashMapComparaison
1、Différents modes de stockage
HashMapIl y en a un à l'intérieur.HashMapEntry<K, V>[]Objet,Chaque paire de valeurs clés est stockée dans cet objet,Lorsqu'il est utiliséputMéthode ajouter une paire de valeurs clés,Oui.newUnHashMapEntryObjet,
2、Le traitement de l'expansion est différent lors de l'ajout de données,C'est fait.newFonctionnement,Recréer un objet,C'est très cher..ArrayMapAveccopyDonnées,Donc l'efficacité est relativement élevée.
3、ArrayMapFournit la fonction de rétrécissement du tableau,InclearOuremoveAprès,Le tableau se rétracte,Espace
4、ArrayMapRecherche dichotomique;

29、HashMapEtHashTableLa différence entre
1 HashMapPas sans fil,Plus efficace、La méthode n'est pasSynchronizePour fournir une synchronisation externe,Oui.containsvalueEtcontainsKeyMéthodes.
hashtable- Oui.,Sécurité des fils,Non autorisénullClés et valeurs pour,Un peu moins efficace,La méthode est:SynchronizeDe.Oui.containsApproche méthodologique.Hashtable Hérité deDictionary Catégorie

30、HashMapAvecHashSetLa différence entre
hashMap:HashMapC'est fait.MapInterface,HashMapEnregistrer les paires de valeurs clés,Utiliserput()La méthode place l'élément dansmapMoyenne,HashMapUtiliser des objets clés pour calculerhashcodeValeur,HashMapPlus vite,Parce qu'une clé unique est utilisée pour obtenir l'objet.
HashSetC'est fait.SetInterface,HashSetStocker uniquement les objets,Utiliseradd()La méthode place l'élément danssetMoyenne,HashSetUtilisez l'objet membre pour calculerhashcodeValeur,Pour deux objetshashcodePeut - être même.,Alors...equals()Méthode utilisée pour déterminer l'égalité des objets,Si les deux objets sont différents,Alors, revenezfalse.HashSetPlusHashMapC'est plus lent..

31、HashSetAvecHashMapComment juger la duplication des éléments de collection?
HashSetImpossible d'ajouter des éléments en double,Quand on appelleadd(Object)Méthode,
Appelle d'abordObjectDehashCodeJugement méthodologiquehashCodeExiste - t - il déjà,Insérer l'élément directement s'il n'existe pas;Appelé s'il existe déjàObjectObjetequalsMéthode pour déterminer s'il faut retournertrue,Si ouitrueL'élément existe déjà,Si ouifalseInsérer un élément.

33、ArrayListEtLinkedListLa différence entre,Et des scénarios d'application
ArrayListEst basé sur un tableau,ArrayListThread Unsafe.
LinkedListEst basé sur une double liste liée:
Utiliser le scénario:
(1)Si l'application effectue un grand nombre d'opérations d'accès ou de suppression sur les éléments de chaque emplacement d'index,ArrayListL'objet est beaucoup mieux queLinkedListObjet;
( 2 ) Si l'application tourne principalement autour de la Liste,Et insérer ou supprimer pendant le cycle,LinkedListL'objet est beaucoup mieux queArrayListObjet;

34、La différence entre un tableau et une liste liée
Tableau:Est le stockage continu des éléments en mémoire;Ses avantages:Parce que les données sont stockées en continu,Adresse mémoire continue,Il est donc plus efficace de trouver des données;Ses défauts:Avant le stockage,Nous devons appliquer un espace mémoire continu,Et vous devez déterminer la taille de son espace au moment de la compilation.La taille de l'espace au moment de l'exécution ne peut pas être modifiée en fonction de vos besoins,Quand les données sont plus grandes,,Il y a un risque de dépassement,Quand les données sont petites,,Et peut - être gaspiller de la mémoire..Lorsque vous changez le nombre de données,Ajouter、Insérer、La suppression des données est inefficace.
Liste des liens:Est une application dynamique d'espace mémoire,Vous n'avez pas besoin d'appliquer la taille de la mémoire à l'avance comme un tableau,Il suffit d'appliquer la liste en cours d'utilisation.,Appliquer dynamiquement ou supprimer l'espace mémoire au besoin,Plus flexible que le tableau pour l'ajout et la suppression de données et l'insertion.Et les données de la liste peuvent être n'importe où dans la mémoire,Associer les données par application(Est relié par un pointeur vers un élément existant)

35、Trois façons d'activer les fils?
avaIl y a trois façons de créer un thread,L'héritage, respectivement.ThreadCatégorie、RéalisationRunableInterfaces et utilisation de pools de threads

36、La différence entre un thread et un processus?
Un thread est un sous - ensemble d'un processus,Un processus peut avoir beaucoup de fils,Chaque thread exécute différentes tâches en parallèle.Différents processus utilisent différents espaces mémoire,Et tous les Threads partagent le même espace mémoire.Ne le confondez pas avec la mémoire de la pile.,Chaque thread a une mémoire de pile séparée pour stocker les données locales.

38、run()Etstart()Différence de méthode
Cette question est souvent posée,Mais c'est là qu'on distingue les intervieweurs.JavaCompréhension du modèle thread.start()La méthode est utilisée pour démarrer le thread nouvellement créé,Etstart()Appel internerun()Méthodes,Ceci et l'appel directrun()Les méthodes fonctionnent différemment.Quand vous appelezrun()La méthode,N'est appelé que dans le thread original,Aucun nouveau thread n'a démarré,start()Méthode pour démarrer un nouveau thread.

39、Comment contrôler le nombre de Threads d'accès simultanés autorisés par une méthode?
semaphore.acquire() Demande un sémaphore,Nombre de sémaphores pour le moment-1(Une fois qu'il n'y a pas de sémaphore disponible,C'est - à - dire lorsque le nombre de sémaphores devient négatif,Une fois de plus, la demande sera bloquée.,Jusqu'à ce que les autres fils libèrent le sémaphore)
semaphore.release() Libérez un sémaphore,Nombre de sémaphores+1

40、InJavaMoyennewaitEtseelpLa différence de méthode;
JavaEn cours de programmationwait Et sleepQui crée une sorte de suspension,Ils peuvent répondre à différents besoins.wait()Méthode de communication entre les fils,Si la condition d'attente est vraie et qu'un autre thread est réveillé, il libère la serrure,Etsleep()La méthode ne libère queCPULa ressource ou le thread actuel s'arrête pendant un certain temps,Mais il ne libère pas la serrure..

41、Parle.wait/notifyCompréhension des mots clés
Attendre le verrouillage de synchronisation de l'objet,Vous devez obtenir le verrouillage de synchronisation de l'objet pour invoquer cette méthode,Sinon, la compilation peut passer par,Mais l'exécution reçoit une exception:IllegalMonitorStateException.
Appeler n'importe quel objet wait() La méthode provoque le blocage du fil,Le thread ne peut pas continuer,Et la serrure de l'objet est libérée.
Réveille le thread qui attend que l'objet se synchronise(Un seul réveil,Si plus d'une personne attend),Notez que lorsque cette méthode est appelée,.Un thread qui ne réveille pas exactement un état d'attente,Mais parJVMDéterminer quel thread réveiller,Et pas par priorité.
Appeler n'importe quel objetnotify()La méthode provoque un wait()Méthode pour débloquer un thread sélectionné au hasard(Mais ce n'est qu'après avoir obtenu la serrure qu'elle est vraiment exécutable).

42、Qu'est - ce qui cause le blocage du fil?Comment le fil se ferme?
Une méthode de blocage signifie que le programme attendra toujours que la méthode soit terminée et ne fera rien d'autre.,ServerSocketDeaccept()En attendant la connexion du client.Dans ce cas, le blocage signifie que le résultat de l'appel est retourné avant,Le thread actuel est suspendu,Ne revient pas tant que les résultats ne sont pas disponibles.En outre,Il y a des méthodes asynchrones et non bloquantes qui reviennent avant la fin de la tâche.
L'un est d'appeler à l'intérieurstop()Méthodes
L'autre est que vous définissez vous - même une balise pour arrêter le fil (Recommandé)

43、Comment sécuriser les fils?
1.synchronized;
2.ObjectDans la méthodewait,notify;
3.ThreadLocalMécanismes Pour y arriver..

44、Comment réaliser la synchronisation des fils?
1、synchronizedMéthode de modification des mots clés.2、synchronizedBloc de déclaration modifié par mot - clé3、Utiliser des variables de champ spéciales(volatile)Réaliser la synchronisation des fils

45、Opération inter - threadList
List list = Collections.synchronizedList(new ArrayList());

46、- Oui.SynchronizedMots clés,Serrure de classe,Verrouillage de la méthode,Compréhension des serrures de rentrée
javaVerrouillage des objets et des classes pour:javaLa serrure objet et la serrure de classe sont essentiellement compatibles avec la serrure intégrée dans le concept de serrure,Mais,Il y a une grande différence entre deux serrures,Les serrures d'objets sont utilisées pour les méthodes d'instance d'objets,Ou sur une instance objet,Une serrure de classe est une méthode statique pour une classe ou une classeclassSur l'objet.Nous savons que,Les instances objet d'une classe peuvent avoir plusieurs,Mais il n'y en a qu'un par classeclassObjet,Ainsi, les serrures d'objets de différentes instances d'objets ne sont pas interférentes les unes avec les autres,Mais il n'y a qu'une seule serrure par classe.Mais il y a une chose à noter,En fait, la serrure de classe n'est qu'un concept,Ce n'est pas réel.,Il est seulement utilisé pour nous aider à comprendre la différence entre une méthode d'instance verrouillée et une méthode statique

49、synchronized Etvolatile La différence entre les mots clés
1.volatileL'essence est de direjvmLa variable courante est dans le registre(Mémoire de travail)La valeur dans est incertaine,Doit être lu à partir de la mémoire principale;synchronizedVerrouiller la variable courante,Seul le thread courant peut accéder à cette variable,Les autres fils sont bloqués.
2.volatileNe peut être utilisé qu'au niveau des variables;synchronizedPeut être utilisé dans la variable、Méthodes、Et au niveau de la classe
3.volatileSeule la visibilité des modifications des variables peut être réalisée,L'atomicité n'est pas garantie;EtsynchronizedPour assurer la visibilité et l'atomicité de la modification des variables
4.volatilePas de blocage du fil;synchronizedPeut causer un blocage du fil.
5.volatileLes variables marquées ne sont pas optimisées par le compilateur;synchronizedLes variables marquées peuvent être optimisées par le compilateur
51、ReentrantLock 、synchronizedEtvolatileComparaison
avaDepuis longtemps, on ne peut passer que parsynchronizedMots clés pour l'exclusion mutuelle,Il a quelques défauts.Par exemple, vous ne pouvez pas étendre une méthode ou une limite de bloc au - delà d'une serrure,Impossible d'annuler au milieu de la tentative d'obtenir la serrure, etc..Java 5 AdoptionLockLes interfaces fournissent des contrôles plus complexes pour résoudre ces problèmes. ReentrantLock Classe implémentée Lock,Il possède synchronized Même sémantique de concurrence et de mémoire et extensibilité.

53、Quatre conditions nécessaires à l'impasse?
Cause de l'impasse

Concurrence pour les ressources du système
La concurrence pour les ressources du système entraîne une pénurie de ressources du système,Et une mauvaise allocation des ressources,Provoque une impasse.
La séquence de progression du processus n'est pas appropriée
Conditions d'exclusion mutuelle:Une ressource ne peut être utilisée que par un seul processus à la fois,C'est - à - dire, pendant un certain temps La ressource n'est détenue que par un seul processus.Si d'autres processus demandent cette ressource à ce stade,Le processus de demande ne peut attendre que.
Conditions de demande et de conservation:Le processus a maintenu au moins une ressource,Mais de nouvelles demandes de ressources ont été présentées.,Et cette ressource Possédé par un autre processus,Le processus de demande est maintenant bloqué,Mais gardez les ressources que vous avez.
Conditions inaliénables:Les ressources obtenues par le processus avant d'être utilisées,Ne peut pas être pris par d'autres processus,C'est - à - dire seulement Libéré par le processus qui obtient la ressource lui - même(Ça ne peut être qu'une libération active.).
Conditions d'attente cycliques: La relation entre plusieurs processus formant une boucle d'attente de bout en bout
Ces quatre conditions sont nécessaires pour une impasse,Tant que le système est bloqué,Ces conditions doivent être remplies.,Si l'une des conditions ci - dessus n'est pas remplie,Il n'y aura pas d'impasse..
Prévention et prévention des blocages:
L'idée de base de l'évitement des impasses:
Le système vérifie dynamiquement le processus d'émission des demandes de ressources que chaque système peut satisfaire.,Et décider d'allouer des ressources en fonction des résultats de l'inspection,Si le système peut être bloqué après l'affectation,Non attribué,Autrement attribué.Il s'agit d'une stratégie dynamique pour s'assurer que le système n'entre pas dans un état d'impasse..
Comprendre la cause de l'impasse,En particulier, les quatre conditions nécessaires pour créer une impasse,Pour éviter le plus possible、Prévention et déverrouillage des blocages.Alors...,Dans la conception du système、Comment faire en sorte que les quatre conditions nécessaires ne soient pas remplies en ce qui concerne l'ordonnancement des processus, etc.,Comment déterminer l'algorithme d'allocation raisonnable des ressources,Évitez que les processus occupent en permanence les ressources du système.En outre,Empêche également le processus d'occuper des ressources en attente.Donc,,Une planification raisonnable de l'allocation des ressources.
La différence entre la prévention des blocages et la prévention des blocages:
La prévention des blocages est l'une des quatre conditions nécessaires pour tenter de détruire au moins les blocages qui en résultent.,Prévention stricte des blocages,L'évitement de l'impasse limite moins strictement l'existence des conditions nécessaires à la création de l'impasse.,Parce que même si les conditions nécessaires à l'impasse existent,,Il n'y a pas de blocage..L'évitement des blocages est l'évitement final des blocages pendant le fonctionnement du système..
56、Qu'est - ce qu'un pool de Threads,Comment utiliser?
La création de Threads coûte cher en ressources et en temps,Si la tâche arrive avant que le thread ne soit créé, le temps de réponse sera plus long.,Et un processus peut créer un nombre limité de fils.Pour éviter ces problèmes,Créer plusieurs Threads pour répondre au traitement au démarrage du programme,Ils sont appelés pools de threads,Les fils à l'intérieur sont appelés fils de travail.DeJDK1.5C'est parti.,Java APIOffreExecutorLe cadre vous permet de créer différents pools de threads.Comme un pool de fils simples,Une tâche à la fois;Nombre fixe de pools de Threads ou de pools de Threads cache(Un pool de Threads extensible pour de nombreuses tâches de courte durée).

57、JavaQuelle est la différence entre le tas moyen et la pile?
Pourquoi classer cette question dans les questions d'entrevue multithreadées et simultanées?Parce que la pile est une zone de mémoire étroitement liée au thread.Chaque thread a sa propre mémoire de pile,Utilisé pour stocker les variables locales,Paramètres de la méthode et appels de pile,Les variables stockées dans un thread ne sont pas visibles pour les autres threads.Le tas est une zone de mémoire commune partagée par tous les threads.Les objets sont créés en tas,Pour plus d'efficacité, les Threads obtiennent un cache du tas sur leur propre pile,Cela peut causer des problèmes si plusieurs Threads utilisent cette variable,À ce moment - là,volatile Les variables fonctionnent,Il exige que le thread lise la valeur de la variable à partir de la mémoire principale.

58、Il y a trois filsT1,T2,T3,Comment s'assurer qu'ils sont exécutés dans l'ordre?
Il existe plusieurs façons de faire exécuter les Threads dans un ordre particulier dans plusieurs threads,Vous pouvez utiliser la classe threadjoin()Méthode pour démarrer un autre thread dans un thread,Un autre thread termine le thread continue.Pour assurer l'ordre des trois Threads, vous devez d'abord démarrer le dernier(T3AppelezT2,T2AppelezT1),Voilà.T1C'est fait en premier.T3Terminé..
Communication entre les fils
Nous savons que le fil estCPUUnit é minimale de répartition.InAndroidLe thread maître n'est pas capable de prendre du temps,Les sous - fils ne peuvent pas être mis à jourUIDe.Et il y a beaucoup de façons dont les fils communiquent,Comme la radio.,Eventbus,L'interface est retournée.,InAndroidPrincipalement utiliséhandler.handlerPar appelsendmessageMéthodes,Le message sera sauvegardéMessageEnvoyé àMessagequeueMoyenne,EtlooperObjet appelé en permanenceloopMéthodes,DemessageueueRetirermessage,À vous.handlerTraitement,Pour compléter la communication entre les fils.

Enfin

J'ai fait une petite compilation ici.AndroidQuestions d'entrevue courantes dans les grandes usines,Et quelquesAndroidRésolution vidéo du schéma,Ont été documentés,Tout est prêt.,J'espère pouvoir vous aider,Réussir l'entrevue.

androidDocument de développement chinois,AndroidDémarrer le tutoriel de développement_Interview

androidDocument de développement chinois,AndroidDémarrer le tutoriel de développement_Développement mobile_02

Comme dans cet article.,Autant me faire un petit compliment.、Laissez un message dans la zone de commentaires ou faites - le suivre.

**Cet article a été publié par[CODINGProjet Open Source:《AndroidRésumé des notes d'étude+Vidéo d'architecture mobile+Le vrai problème de l'interview de Dachang+Code source du projet》](

)

androidDocument de développement chinois,AndroidDémarrer le tutoriel de développement_Développement mobile_03
Inclus**

Enfin, présentez - vous,Petit montage13Diplômé de l'Université Jiaotong de Shanghai,J'ai été dans une petite entreprise,Je suis allé à Huawei.、OPPOAttendez la grande usine,18Il est entré à Ali en.

Sachant que la plupart des élèves du primaire et du secondaireAndroidIngénieur,Je veux améliorer mes compétences,Souvent, c'est l'auto - croissance ou l'apprentissage en classe,Mais pour les établissements de formation, les frais de scolarité sont de près de 10 000,La pression réelle n'est pas faible.L'auto - apprentissage fragmenté est inefficace et long,Et il est très facile de toucher le plafond et la technologie stagne!

C'est donc aussi l'espoir d'aider les amis qui veulent apprendre par eux - mêmes et ne savent pas par où commencer,Tout en allégeant le fardeau de tout le monde.

版权声明
本文为[Domaine DDD]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013214247899I.html

Scroll to Top