F***************** JAQ Java Asked Questions v. 2.3 ***** pro Java 7

Transkript

F***************** JAQ Java Asked Questions v. 2.3 ***** pro Java 7
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
F***************** JAQ Java Asked Questions v. 2.3 ***** pro Java 7 SE
*****************
*
1
2
3
4
5
6
7
8
*12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
* Připomínky, doplňky, návrhy, náměty apod. posílejte na [email protected]
******************************************************************************************
* A-aplety, C-kolekce, D-JDBC, E-události, G-grafika, I-image, J-swing, N-sítě,
* P-primitivy, S-proudy, T-vlákna, U-utility, W-awt, X-vyjímky, Y-JVM, Z-základy
******************************************************************************************
A#091 V jakém pořadí jsou volány hlavní metody apletu ?
init(), start() <- -> stop(), destroy()
A#092 Uveďte příklad umístění apletu do HTML stránky.
<APLET CODE=xxx.class CODEBASE=... ARCHIVE=... WIDTH=... HEIGHT=...>
<PARM NAME1="..." VALUE1="..."> <PARM NAME2="..." VALUE2="...">
</APPLET>
V HTML5 se píše místo <APPLET> </APPLET>
<OBJECT> </OBJECT>
A#093 Které základní omezení má aplet oproti aplikacím ?
Přistupovat k lokálním souborům, zjišťovat či měnit vlastnosti systému,
vytvářet knihovny a definovat nativní metody,
spouštět programy, navazovat komunikaci s třetí stranou.
A#094 Jak lze omezení apletu překonat ?
Pomocí grantu a certifikátu.
A#251 Co je applet, jak se spouští a jaká má omezení ?
Aplet je instanceof Applet spustitelný v browseru nebo appletvieweru.
Nemůže přistupovat k lokálnímu systému souborů, systémovým proměnným,
spouštět programy a navazovat komunikaci se třetí stranou.
A#483 Co je appletviewer, kde se nalézá, jaké má výhody a jaká omezení ?
Testovací program apletů, v jdk/bin, přesně interpretuje právě jen tag APPLET.
A#484 Která třída je přímým předkem java.applet.Applet a která přímým potomkem ?
java.awt.Panel a javax.swing.JApplet nebo ta kterou vytvoříte.
A#506 Jak lze použít přetížených konstruktorů Appletu / JAppletu ?
Nelze, neboť browser umí zavolat jen bezparametrický konstruktor.
Funkcionalitu konstruktoru supluje metoda init().
A#587 K čemu se v apletu využívá metoda
public static void main(String[] args) // ?
K ničemu, neboť browser ji neumí zavolat. Volá bezparametrický konstruktor a
metody init, start, stop a destroy.
C#120 Napište výpis objektů v kolekci referované interfejsem java.util.Collection .
Collection coll = … ;
for ( Object o : coll ) System.out.println(o);
// anebo
Iterator it = coll.iterator();
for ( Iterator it = coll.iterator(); it.hasNext() ; )
System.out.println( it.next() );
C#150 K čemu slouží třída java.util.HashMap, v čem je výhodná a jaké má nejdůležitější
metody ?
Jako uložiště dvojic (Object key, Object value) v operační paměti s kvazikonstantním
přístupem, rozšiřovatelné, put(key,value) get(key)
C#151 Co jsou, k čemu slouží a co definují java.lang.Comparable a java.util.Comparator ?
Oba jsou interfejsy a slouží pro porovnání objektů daného typu
- první jako "naturální" implementací typu a konkrétní metodou int compareTo(Object
o)
- druhý pro vytváření uživatelských komparátorů (pro řazení a uspořádání objektů)
definuje metody resp. int compare(Object o, Object o) a equals(Object o).
Není třeba přístup ke zdrojovému kódu porovnávaného typu.
C#171 Co splňují objekty v kolekci java.util.TreeSet a jak se toho dosáhne ?
Uspořádání. Buď jsou přirozeně Comparable nebo je dodán Comparator.
C#241 Jak lze vytvořit synchronizovanou kolekci java.util.ArrayList ?
-1-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
List x = Collections.synchronizedList( new ArrayList() );
C#243 Jaký je rozdíl mezi Collection a Collections v java.util ?
Interfejs (ne pro mapy) vs. třída užitečných statických metod (i pro mapy).
C#384 Jak zajistit neměnitelnost nějaké kolekce - např. ArrayList ?
Vytvořit
private List l = new ArrayList(); a ten naplnit,
pak vytvořit
public List ul = Collections.unmodifiableList(l);
C#553 Co je objekt typu HashMap() a na čem závisí jeho efektivita ?
API realizace interfejsu Map užitím hešové tabulky, což umožnuje
kvazikonstantní časovou složitost vkládání a přístupu k datům, tj. O(1).
Efektivita záleží na kvalitě metody hashCode() a dostatečném rezervním
prostoru ( asi >30 % )
C#554 Co je objekt typu TreeMap() a jaká je efektivitu jeho činnosti ?
API realizace interfejsu SortedMap vyváženým stromem, což umožnuje
logaritmickou časovou složitost vkládání a přístupu k datům, tj. O(log n).
Klíče musejí být Comparable či musí být uveden specifický Comparator.
C#595 Maximálně kolik objektů může obsahovat ArrayList (při dostatečné paměti) ?
Integer.MAX_VALUE+1 tj. 2147483648.
Přesněji řečeno: ArrayList objekty neobsahuje ale jen referuje.
C#596 Co je Map.Entry a k čemu slouží.
Vnořené interface<K,V> v interfejsu java.util.Map<K,V> umožňující přístup
ke dvojici referencí key-value metodami getKey, getValue, setValue a
také equals a hashCode.
D#371 Co znamená JDBC a jaké je jeho podstata ?
Java DataBase Connectivity - jednotný způsob přípojení a
komunikace s DB prostřednictvím SQL.
D#372 Které balíčky realizují JDBC ?
java.sql a javax.sql.
D#373 Které důležité typy definuje java.sql ?
Třídu: DriverManager,
Interfejsy: Driver, Connection, Statement, ResultSet, MetaDataResultSet.
D#374 Ke kterým DB se lze pomocí JDBC připojit ?
Ke všem, ke kterým producent DB dodává driver pro JDBC.
D#375 Jakým standardním jazykem se ovládají databáze skrze JDBC ?
SQL - Structured Query Language
D#376 Jmenujte nejdůležitějsí příkazy jazyka SQL.
CREATE TABLE, INSERT INTO, SELECT, UPDATE
D#377 Jaký parametr má metoda executeQuery a co vrací ?
String jenž zadává dotaz příkazem SELECT sloupce FROM tabulka.
Vrací se objekt typu ResultSet obsahující tabulky výsledku.
D#378 K čemu slouží objekt ResultSetMetaData ?
K získání informací o tabulce s výsledkem hledání.
E#095 Co je listener ?
Jednak interfejs, který definuje metody jež slouží přijetí
specifických událostí, jednak objekt (handler), který tyto metody
implementuje a tudíž objekty-události přijímá a zpracovává.
E#096 Co je adapter ?
Zpravidla abstraktní třída implementující určitý listener
konkrétními avšak prázdnými metodami. Tu konkrétní adapter
využije jako předka s tím, že některé metody překryje.
E#097 K čemu slouží interface ActionListener ?
Definuje void actionPerformed( ActionEvent ev );
Tu volají zdroje ActionEventů např.: Button, TextField
E#153 Napište příklad handleru pro pohyb myši s registrací u zdroje události MouseEvent.
class Handler extends MouseMotionAdapter {
public void mouseMoved(MouseEvent ev) { ... }
}
Component c= ...
-2-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
c.addMouseMotionListener( new Handler() );
E#167 Co jsou listenery z balíčku java.awt.event a k čemu slouží?
Listenery jsou interfejsy pro definici handlerů, ketré umožňují přijímat
zprávy od zdrojů ve formě objektů událostí, tj typu Event.
E#168 Co jsou adaptery z balíčku java.awt.event a k čemu slouží?
Adaptery jsou abstraktní třídy s konkrétními prázdnými metodami.
Usnadňují zápis při vytváření handlerů jež jsou listenery.
E#277 Jak zjistíte zdroj události v metodě actionPerformed(ActionEvent ev) { //?
Object o = ev.getSource();
E#446 Popište princip delegačního modelu události.
Zdroj rozesílá objekt patřičného podtypu EventObject jako argument smluvené
metody všem objektům-handlerům, které jsou u zdroje momentálně registrovány.
Hadlery musí implementovat příslušné listenery, což zaručuje, že mají
konkrétní metody, které zdroj volá.
G#057 K čemu slouží abstraktní třída Graphics ?
K vytváření kreseb a animací.
G#058 Uveďte některé metody objektu java.awt.Graphics ?
draw/fill: Rectangle, Line, Oval, String, Image ;
get/set Color Fontů ; clip, copy, ...
G#059 K čemu slouží abstraktní třída FontMetrics ?
Ke zjištění velikosti (výšky, šířky) znaků daného písma v pixelech.
Je svázaná vždy s nìjakým grafickým kontextem (objekt Graphics),
který urèuje poèet dpi (pixelù na palec).
Velikost písma se zadává v bodech (1/72 palce).
G#064 K čemu slouží a co obsahuje metoda update (definovaná v awt) ?
K překreslení komponenty. Obsahuje volání clear(), které vymaže
pozadí komponenty a pak volá paint(g).
G#288 Co jsou, jaký je jejich vztah a rozdíly mezi Graphics a Graphics2D (z java.awt) ?
Obě jsou abstraktní třídy v java.awt, Graphics2D extends Graphics,
Graphics má pouze jednoduchou "pixelovou" int metriku. Graphics2D podporuje
geometrické znázornění s přesností float či double - viz java.awt.geom.
Přidává vlastnosti (paint, stroke, composite, transformace, kreslení shape, ...)
G#445 Čím to, že lze Graphics g přetypovat: Graphics2D g2=(Graphics2D) g; // ?
Ačkoli Graphics2D je potomkem třídy Graphics, v metodách
paint(Graphics g) či update(Graphics g), g referuje "podstrčený"
objekt typu Graphics2D - tedy výkonnější.
G#544 Co znamená java.awt.geom.Point2D.Double ? Jaké má přednosti ?
Vnořená třída Double je statický člen ve třídě java.awt.geom.Point2D
Vysokou přesnost pro výpočetní geometrii.
G#548 K čemu slouží balíček java.awt.geom a s jakou výpočetní přesností ?
K výpočtům a vykreslení v oboru rovinné geometrie s přesností double a float.
G#549 Které křivky podporuje balíček java.awt.geom ?
Lineární, kvadratické, kubické(Bézierovy) a z těchto složené. ?
G#550 Co umožňuje třída java.awt.geom.AffineTransform ?
Vytvářet objekty pro affinní transfomace, tzv. transformátory, které dokáží
transformují útvary typu Shape a Point Jedinou matici se definuje posun (
translation ),
škálování ( scaling ), překlopení ( flip ), rotace ( rotation ) a úkos ( shear ).
Zachovávají úsečky, paralelitu a dělící poměry.
G#551 K čemu slouží zavíjecí pravidla (winding rules) v balíčku java.awt.geom ?
K určení zda bod je uvnitř či vně i složité uzavřené křivky slouží pravidla
WIND_NON_ZERO a WIND_EVEN_ODD.
G#552 Nakreslete princip zavíjecích pravidel WIND_NON_ZERO a WIND_EVEN_ODD !
První počítá počet průsečíků polopřímky a orientované křivky zleva a zprava.
Druhé počítá součet průsečíků polopřímky a křivky zda je sudý nebo lichý.
G#574 Co je RGB a co CMYK, k čemu se využívají ?
Barevný prostor (ColorSpace): RGB=RedGreenBlue a pro display,
-3-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
CMYK=CyanMagentaYellowBlack pro tisk.
I#420 Jaké jsou podporované formáty obrázků a jak se natahují do aplikace ?
GIF, PNG, JPEG, BMP, WBMP.
Pomocí java.awt.Toolkit.createImage(String filename).
I#421 Jakou třídou je reprezentován obrázek v operační paměti ?
abstract java.awt.Image
I#422 Jakým prostředkem lze stáhnou obrázky do operační paměti v aplikaci ?
Pomocí java.awt.MediaTracker.
Každý je stahován pro něj zřízeným vláknem.
I#423 Jak se stahují obrázky do operační paměti v apletu ?
Stažení zajišťuje prohlížeč na popud getImage(..) třídy java.applet.Applet.
I#424 Jak se vykreslí obrázek pomocí objektu Graphics ?
g.drawImage(image, x, y) nebo g.drawImage(image, x, y, w, h).
Parametry w, h umožňují transformaci na šířku a výšku.
I#425 Co je ikona a jak čím se vytvoří z obrázku ?
Ikona je dekorace - "obtisk do GUI" - reprezentovaná interfejsem Icon.
Ikonu z obrázku lze vytvořit pomocí třídy ImageIcon.
I#426 Jak je reprezentován pixel ?
Standardně jako int po bytech zleva: alpha, red, green, blue <0, 255>
V BufferedImage lze zvolit jinou reprezentaci pixelu.
I#428 K čemu slouží PixelGrabber ?
K získání pole pixelů typu int[] každý se strukturou argb.
I#566 Nastavte v pixelu int pix maximum červené složky aniž změníte ostatní.
pix |= 0xff0000;
nebo pix = pix | 255<<16;
I#429 Co je java.awt.image.MemoryImageSource ?
Třída implementující ImageProducer, umožňující vytvořit Image z int[]
pixelů metodou
Image Component.createImage(ImageProducer ip ) .
J#165 Vyjmenujte předky třídy javax.swing.JFrame ve správném pořadí.
Frame, Window, Container, Component, Object
J#166 Vyjmenujte předky třídy javax.swing.JButton ve správném pořadí.
AbstractButton, JComponent, Container, Component, Object
J#470 Co je to Border, kde je definován, k čemu slouží a jaké druhy znáte ?
Interfejs javax.swing.border.Border normuje 10 tříd pro zvýraznění
okrajů JComponent např.: CompoundBorder, LineBorder, EtchedBorder,
BevelBorder, TitleBorder ...
J#471 Co je to Duke, k čemu slouží ? Nakreslete jeho schema.
Maskot Javy - tajtrlík s červeným frňákem.
J#472 Co je to JSpinner, k čemu slouží a jaké znáte druhy ?
Je to swingová JComponenta realizující krokový volič
předdefinovaných hodnot. Podle užitého model může být
standardně datumový, textový, číselný.
J#473 Jaký je rozdíl mezi Componentami java.awt a JComponentami javax.swing ?
První jsou závislé na platformě, druhé jsou většinou light-weight
kreslené Javou, MVC, patří do JFC, implementují Accessible
J#474 Co je to GlassPane, kde je definována, k čemu slouží ?
Swingová komponenta definovaná v javax.swing.
K zachytávání událostí myši nad celou zasklenou komponentou.
J#475 Jaké je pořadí vrstev JFrame ?
Zdola: Frame, RootPane, LayeredPane, ContentPane, GlassPane
J#476 Jaké metody v jakém pořadí volá metoda paint třídy JComponent ?
paintComponent, paintBorder, paintChildren.
J#477 Co znamená pojem Look and Feel
Jelikož swingové komponenty (lighweight) se vykreslují v Javě,
lze dynamicky měnit jejich vzhled standardně dle platformy
Windows, Motif, Metal.
J#478 Co je progress bar a jak je realizován ?
Dynamický indikátor postupu nějaké akce pomocí komponenty
-4-
C:\Users\cypher\Desktop\JAQ_2.0.txt
N#106
N#107
N#108
N#109
N#125
N#297
N#314
N#315
N#316
P#004
P#005
P#174
P#220
P#221
P#222
P#223
P#224
P#225
P#271
P#272
P#274
P#278
24. května 2012 13:47
java.swing.JProgressBar a potomka DefaultBoundedRangeModel
v němž samostatné vlákno volá setValue( ).
K čemu slouží třída InetAddress ?
Zapouzdřuje internetovou (IP) adresu a poskytuje metody pro přístup k DNS.
K čemu slouží třída URL ?
Ke konstrukci objektů typu URL určujících umístění zdroje.
Co je to socket a k čemu slouží ?
Objekt typu Socket slouží k toku dvou proudů mezi dvěma
komunikačními partnery. Získáme je metodami getInputStream
a getOutputStream.
K čemu slouží třída ServerSocket ?
K vytvoření objektů, které na straně serveru umožňují
přijmout požadavek klientů na komunikaci.
Co blokuje a co vrací metoda accept() třídy ServerSocket?
Blokuje vlákno volající tuto metodu dokud nějaký klient
nezažádá o spojení. Vrací objekt typu Socket.
Kde je definovaná třída Socket ?
V java.net.
Jaký je rozdíl mezi objekty typu URL a URLConnection ?
První vyjadřuje umístění zdroje je imutabilní, nekontaktuje síť.
Kontroluje syntaktickou správnost a přípustnost protokolu.
Druhý představuje přístup ke zdroji a užívá síť.
Jaká se struktura obsahu URL ?
protokol:subprotokol://hostitel:port/zdroj#reference?dotaz...
Napište, jak lze stáhnout data z internetového zdroje !
InputStream is = new URL("http:// ... ").openStream();
Následuje čtecí cykl.
Uveďte příklad definice konstanty rychlosti světla.
public class Fyzika {
public static final double RYCHLOST_SVETLA = 2.99E+8; // [ m/sec ]
}
Uveďte všechny primitivní datové typy a jejich bitové délky.
boolean, byte, char, short, int, long, float, double
?
8
16
16
32
64
32
64
Jaké největší číslo (zhruba) lze uložit do proměnné typu long ?
Přesně: 9 223 372 036 854 775 807, postačí však: 8-10 *10^18 (trilionů)
int[] p = {1,2,3}; p.length=7; p[4]=5;
// Co obsahuje pole p ?
Nic. Kompilátor odmítne p.length=7; neboť p.length je finální.
int[] p = {1,2,3}; p[4]=5;
// Jaký bude nyní obsah pole p ?
Obsah zůstane {1,2,3}. Avšak druhý příkaz způsobí výjimku.
Po vyjímce ArrayIndexOutOfBoundsException bude obsahovat {1,2,3}.
Proč je délka jednorozměrného pole length finální ?
Pole nelze prodloužit bez narušení následujících bytů.
Zkrácením by došlo k fragmentaci paměti.
Jak dosáhnout toho, aby index prvku pole mohl být i záporný ?
To nelze.
int[] p=new int[0x14]; Jakou má pole p délku a co obsahuje ?
20, obsahuje dvacet nul typu int.
int[] p=new int[014]; Jakou má toto pole délku a co obsahuje ?
12, obsahuje dvanáct nul typu int.
Co se stane: int[] p= new int['Z']; System.out.println(p['Y']); // ?
Vytiskne se 0.
Co se vytiskne: System.out.println( (new int['Z'])['Y'] );
0
Co se vytiskne: System.out.println( (new int['Z'])['Z'] );
java.lang.ArrayIndexOutOfBoundsException: 90
Co vytiskne float x0000Ff = 0x0000Ff; System.out.println(x0000Ff); //?
-5-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
255.0
P#279 Co vytiskne long x0000FL = -0x0000FL; System.out.println(x0000FL);
//?
-15
P#321 Co zajistí příkaz int[] p = final new int[]{1,2,3};
Syntaktickou chybu chybným užitím final.
P#322 Jak lze zajistit neměnitelnost prvků pole ?
Skrýt pole do objektu a umožňit přístup k prvků jen pomocí getru.
P#332 Kolik prvků může dvojrozměrné pole maximálně obsahovat ?
2^62 ~ 4.67E18 (trilionů). Tvoří čtvercovou matici 2^31 * 2^31.
Ale chtělo by to lepší počítač.
P#333 Kolik prvků může jednorozměrné pole maximálně obsahovat ?
2^31 tj. ~ 2.1 miliardy. Počet prvků je dán atributem každého pole
final int length v intervalu <0, 2^31-1>.
P#335 Co znamená, že je pole homogenní ?
Všechny jeho prvky jsou téhož typu.
Pole primitivů jsou vždy homogenní.
P#337 Je pole primitivů Serializable ?, je Cloneable ?, je Comparable ?
Každé pole je automaticky Serializable a Cloneable.
Není Comparable, neboť primitivní hodnoty nesouvisí s interfejsy.
P#338 Jak otestovat, zda pole je homogenní ?
Pole primitivů je vždy homogenní. Pole referenčních typů je třeba
otestovat zda všechny prvky (objekty) jsou vytvořeny touž třídou
pomocí getClass( ) anebo jsou null.
P#339 Jak se dá využít pole Object[ ][ ] p = new Object [ ][10];
Nedá, je to chybné syntaxe, neboť není definované pole řádek.
P#340 Co jsou literály, jaké jsou jejich druhy ? Uveďte příklady.
Přímo vepsaná konstantní hodnota ve zdrojovém kódu.
Numerický, znakový, logický, řetězový, referenční, typový:
3E8F 0xFF, 'A' '\u00FF' , true, "BLBLA", null, Integer.class
P#381 Jaký je nejmenší počet klíčových slov case v těle příkazu switch ?
0.
Tělo může být i zcela prázdné, default může být nanejvýš jeden.
P#385 Co působí příkaz
System.err.println( '\n' ); // ?
Dvojí přechod na další řádku ve výstupním proudu System.err
užívaného pro chybové zprávy.
P#386 Co působí příkaz
System.err.println( (char) 0xA ); // ?
Dvojí přechod na další řádku ve výstupním proudu System.err
užívaného pro chybové zprávy.
P#387 Co působí příkaz
System.out.println( 0b11_11_11 ); // ?
Vytiskne 63 a přejde na novou řádku.
P#388 Co působí příkaz
System.out.print( 0b11_11_11+11 ); // ?
Vytiskne 74 aniž přejde na novou řádku.
P#389 Kde všude ve zdrojovém kódu lze užít symbol § zvaný paragraph ?
Není v jazyce definován - lze ho užít jen v komentářích
a v literálech znakových a řetězových.
P#390 Kde všude ve zdrojovém kódu lze užít symbol # zvaný number sign ?
Není v jazyce definován - užívá se však v URL jako příznak kotvy.
P#391 K čemu slouží symbol
^
a jak působí ?
Je to jednak logický a jednak bitový operátor XOR (eXclusive OR)
tedy nonekvivalence.
P#392 Co a proč vypíše příkaz System.out.println( 5 ^ 2 );
?
7 a přejde na novou řádku.
P#393 Jaký bude typ a hodnota výrazu ?:
16 ^ 7L
?
long, 23
P#394 Co a proč vypíše příkaz System.out.println( 16 ^ 7.0 ); ?
Nic, kompilátor ohlásí syntaktickou chybu.
P#395 Co a proč vypíše příkaz System.out.println( true ^ false );
?
true
-6-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
P#396 Co a proč vypíše příkaz System.out.println( 'A' ^ 'B' ^ 'B' ^ 'A');
?
0, neb ^ je operace komutativní a asociativní
P#397 Co a proč vypíše příkaz System.out.println( true ^ 0 );
?
Nic, kompilátor ohlásí syntaktickou chybu.
P#398 Co a proč vypíše příkaz System.out.println( ^ true );
?
Nic, kompilátor ohlásí syntaktickou chybu.
Operátor ^ je binární, infixní.
P#399 Co a proč vypíše příkaz System.out.println( 7 ^ 0 );
?
7 a přejde na novou řádku.
P#400 Co a proč vypíše příkaz System.out.print( 7 ^ -1 );
?
-8
P#418 Jaký bude typ a hodnota výrazu ?:
( ~ ~ ~ 3 )
int -4. dvojice inverze se vyruší zbyde ~ 3 -> -3-1.
P#419 Jak vytvoříte ekvivalenci dvou boolevských proměnných a, b ?
!a^b
nebo
!(a^b)
nejlépe však a == b
P#435 Co a proč vytiskne příkaz System.out.println( ! true != true ); ?
true . Neboť unární operátor má vyšší prioritu než !=
.
P#436 Co vytiskne příkaz System.out.println( !! n );
Je-li n nastavená boolevská hodnota, pak ji.
Jinak syntaktická chyba.
P#437 Co vytiskne příkaz System.out.println( 3! );
Sice to připomíná faktoriál tj. 6 , ale je to syntaktická chyba.
P#449 Co vyjadřuje příkaz for(;;) { ... }
// ?
Nekonečný cyklus, pokud v těle cyklu nedojde na
break, return,
System.exit, přerušení či ukončení probíhajícího vlákna,
explicitní či implicitní vyhození objektu typu Throwable,
výpadek elektřiny nebo zvetšelost počítače.
P#450 Co se stane v příkazu switch pro
case "start": break;
Má-li řídící proměnná typu String hodnotu "start" přejde zpracování
na příkaz následující switch.
Pro Javu < 7 kompilátor ohlásí syntaktickou chybu.
P#451 Co se stane v příkazu switch pro
case "stop": continue;
Má-li řídící proměnná typu String hodnotu "stop" přejde zpracování
na další interaci obalujícího cyklu.
Pokud neexistuje anebo
pro Javu < 7 kompilátor ohlásí syntaktickou chybu.
P#479 Je číslo Double.MIN_VALUE kladné nebo záporné - a jak zhruba velké ?
Kladné a šíleně malé, konkrétně: 4.9e-324
P#480 Kolik čísel umožní typ double rozlišit v intervalu (0.0, 1.0) ?
Mantisa má 52 bitů, tedy varietu 2^52 skoro 10^16 (10 biliard) čísel.
P#499 Jak vytvoříte bitovou ekvivalenci proměnných long a, b ?
~a^b
nebo
~(a^b)
P#501 Co a proč vytiskne double a=1e10; System.out.println( a < a+1e-7 ); ?
false, ač sčítání proběhne přírůstek je malý a do mantisy se nevejde.
P#503 Co vytiskne
int k=3; System.out.println( Integer.MIN_VALUE * k);
?
-2147483648
,tj. Integer.MIN pro každé liché k.
P#504 Co vytiskne
int k=4; System.out.println( Integer.MIN_VALUE * k);
?
0,
pro každé sudé k.
P#510 Co bude v b a proč ?: int m=Integer.MIN_VALUE; boolean b= m == -m;
true, neboť v integrální aritmetice MIN_VALUE a 0 jsou svojí negací,
tyto dvě hodnoty jsou vzhledem k negaci idempotentní.
P#511 Co vytiskne:
System.out.println( 0.F / 0 );
NaN, rozšíření do float bude 0.0F/0.0F, což je neurčitý výraz.
P#512 Kolik cyklů provede ?:
short i=0, j=0; for (; i+j==0 ; i--, j++) ;
Kupodivu skončí po 32768 cyklech kdy j == i ==-32768 a jejich
součet počítaný v aritmetice int bude -65536 následkem přetečení j.
Pro int i=0, j=0; by součet byl navěky 0.
P#513 Co vytiskne
System.out.println((byte)0xFF_80); ?
-7-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
-128, zúžení vezme jen pravý byte, tedy 0x8_0 čili 0b1000_0000.
P#514 Jakou má typ short vlastní aritmetiku ?
Nemá vlastní, nýbrž zprostředkovanou typu int, pomocí rozšíření
a následného zúžení. Totéž platí i pro typy char a byte.
P#515 Co je ternární výraz ? Napište příklad.
Výraz získá dynamicky jednu ze dvou hodnot dle hodnoty podmínky.
a > b ? Math.sin(x) : 0
P#516 Co se stane pro b = true resp. false ? ( b ? new Thread() : 2.71F )
Výraz má hodnou reference na objekt typu Thread rep. Float.
P#517 Budiž: int k, p=k & -k; Jaké vyjde p pro různá k ? Zkuste pro k=20.
p je hodnotou nejnizšího jedničkového bitu k. Pro k=20 je p=4,
pro k lichá p=1, pro k=0 je p=0, pro k=MIN_VALUE je p=k.
Krom k=0 či MIN_VALUE je p=pow(2,n)>0 kde n je dělitelem k.
P#520 Co je třeba k provedení a co vytiskne System.out.print($_=1e-0F); // ?
Nevkusnou proměnnou $_ definovat jako float či double. Vytiskne: 1.0 .
P#528 Co vytiskne
System.out.print( ++'A' ); a proč ?
Chyba kompilace, neboť 'A' není proměná (což požaduje ++) nýbrž hodnota.
P#529 Co vytiskne
System.out.print( -'A' ); a proč ?
-65, neboť unární minus rozšíří char na int.
P#530 Co vytiskne
System.out.print( ++Math.PI ); a proč ?
Chyba kompilace, neboť Math.PI je finální a zvýšenou hodnotu nelze vložit.
P#561 Co se stane: int[] a={}, b={1,2}; System.out.print( (b=a).length );
//?
Vytvoří se dvě pole, b začne referovat na pole nulové délky, čímž se ztratí
reference na původní pole {1,2} a pak se vytiskne nula.
P#562 Co se stane:
System.out.print( (char)('A'/1 ^ 0b0010_0000L + 3 ) );
//?
Vytiskne se b.
Ano, je to hnusné, avšak uvažte jak k tomu došlo.
A k takovému programátorovi zavolejte rychlou psychiatrickou pomoc.
P#564 Co se stane: System.out.print( 1F == 1 );
Vypíše se true. Pravý operand se rozšíří na 1F , neboli 1.0F == 1.0F
P#567 Co vytiskne
System.out.println(018L);
// a proč ?
Nic, neboť 8 není oktalová číslice.
P#568 Co vytiskne
System.out.println(018D);
// a proč ?
18.0 literál je vynuceně douuble a tudíž se chápe dekadicky.
P#569 Co vytiskne
System.out.println(017.+017);
// a proč ?
32.0
první literál je double dekadicky, druhý je int oktalově
P#570 Co vytiskne
System.out.println(0x1e+2);
// a proč ?
32 první literál je int hexadecimální, druhý je int.
P#576 Co vytiskne System.out.println(0xFFFF << 16 >>> 16);
//?
65535
tj. Short.MAX_VALUE.
P#577 Co vytiskne System.out.println(0xFFFF << 16 >> 16);
//?
-1 ,neboť znaménkový bit "1" se při >> rozšíří napravo.
P#578 Jak vypočítáte třetí odmocninu z proměnné double x ?
Americky:
Math.pow(x,1./3) nebo evropsky: Math.pow(x,1/3.0)
P#581 Co vypíše System.out.print("abc" == "a"+"bc");
?
true. Konkatenace a následné porovnání proběhne již v kompilaci.
P#583 Co vypíše System.out.println(1+""+2=="12");
?
true, obě konkatenace a následné porovnání proběhne již v kompilaci.
P#585 Kde lze zapsat ... tzn. trojtečku, jaký má význam a jakou výhodu ?
Jen jako poslední formální parametr metody či konstruktoru. Je to příznak varargs
a tedy volání lze zapsat např. takto:
min(a,b,c,d) aniž je třeba zkostruovat
předem pole prvků a,b,c,d.
P#586 Co se vytiskne
void m(int[] ... zz) {System.err.print( zz.getClass() );}
// ?
class [[I , neboť zz představuje pole polí int.
P#588 Kam continue předá řízení v do-while cyklu ?
Do testu podmínky cyklu.
P#589 Kam continue předá řízení ve for cyklu ?
Do seznamu modifikačních příkazů cyklu.
-8-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
P#590 Lze v těle cyklu typu for( ... : ... ) použít příkaz continue ? Proč ano/ne ?
Ano, je to dovoleno.
P#591 Jakého je typu a jaký je interval hodnot výrazu 0.5*Math.random()+4/3
// ?
double,
< 1.0, 1.5 ) hodnoty jsou pseudonáhodné, rovnoměrně rozdělené.
P#594 Která metoda je obecnější void m(int[] p) či void m(int ... p) a proč ?
Ta m(int ... p) , neboť lze ji volat jako
m(pole) i jako m(a, b, c)
kde
int a,b,c;
int[] pole={a,b,c};
V obou případech v těle metody je p typu int[].
P#597 Jakou hodnotu má výraz Integer.parseInt("-fF",16) ?
-255 (dekadicky) typu int, druhý parametr vyjadřuje základ soustavy.
P#598 Jaká bude hodnota m(5) kde: int m(int q) { int q+=4; return q; } // ?
Syntaktická chyba, neb lokální proměnná q není automaticky inicializovaná
a tedy operátor += nelze použít.
Parametr q není vůbec v těle použit.
S#098 Které abstraktní třídy definují základní metody proudů?
java.io. InputStream, OutputStream, Reader, Writer.
S#099 Jaké znáte druhy proudů a co je jejich společný předek ?
Bytové a znakové tj. pro byte resp. char a každý z nich
buď vstupní anebo výstupní. Je jím java.lang.Object.
S#100 Co jsou filtry bytových proudů a jaký parametr má jejich konstruktor ?
FilterInputStream resp. FilterOutputStream jsou konkrétní protected podtřídy
Input resp. Output Stream, které umožňují modifikovat proud.
Parametrem je právě Input resp. Output Stream.
S#101 Které proudy umožňují binární vstup(výstup) primitivních typů ?
DataInputStream, DataOutputStream a také jejich potomci
ObjectInputStream, ObjectOutputStream
S#102 Který proud zajišťuje výstupní textovou konverzi ?
java.io.PrintStream metodami println, print, printf.
S#103 Kde v API Javy najdete rouru a které typy ji umožňují?
V java.io. PipedInputStream PipedOutputStream
S#104 K čemu slouží objekt typu File a jakou metodou se takový objekt otvírá ?
K popisu a manipulacím na lokálním souborového stromu.
Neotvírá se, otvírají se proudy a to automaticky.
S#105 K čemu slouží interface DataInput resp. DataOutput ?
Definuje metody pro čtení resp. zápis primitivních typů.
S#130 Co umožňuje třída java.io.File ? Jaké její metody znáte ?
Získat informace a ovlivnit lokální datový systém.
isDirectory, exists, canRead, list, delete, rename, createFile
S#133 K čemu slouží serializace ? Co lze a co nelze serializovat ?
K převodu Serializable objektů do proudu a k jejich zpětné rekonstrukci.
Jen nestatické, netransientní atributy.
Vše ostatní, tj. statické atributy, metody, třídy, interfejsy nelze.
S#154 Co může být označeno modifikátorem transient a jaký má smysl?
Pouze instanční proměnná. Její hodnota se serializací nepřenáší.
S#164 Uveďte jména důležitých tříd balíčku java.io.
File, InputStream, FileInputStream, ObjectInpuStream, Reader, BufferedReader,
PrintStream, Writer BufferedWriter
S#180 Je třída java.lang.Object Serializable ? Proč ano, proč ne ?
Ne, pak by byly všechny třídy Serializable.
S#257 Co je deflace resp. inflace v java.io ?
Komprese resp. dekomprese dat.
S#308 Co žádá interfejs java.io.Flushable metodou flush() pro streamy ?
Konkretizaci metody flush(), která co nejdříve vypudí data
z výstupních bufrů k cíli (file, socket) aniž se stream uzavře.
S#309 Kdy je třeba zavolat metodu open() u objektů typu java.io.InputStream ?
Nikdy - ta neexistuje. Proudy (i výstupní) se otvírají automaticky.
S#310 Co jsou a čem se liší java.io.InputStream a java.io.Reader ?
Kořenové abstraktní třídy - pro strom tříd pro čtení jednak
-9-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
byte streamu a jednak character streamu.
S#311 Co jsou a čem se liší java.io.OutputStream a java.io.Writer ?
Kořenové abstraktní třídy - pro strom tříd pro zápis jednak
byte streamu a jednak character streamu.
S#312 Co je bufr ?
V software: Vyrovnávací paměť - vyhražená v operační paměti určená pro I/O operace.
S#313 Jaké nebezpečí hrozí napomeneme-li zavřít výstupní proud ?
Data zbylá v bufru se neodešlou k cíli ( file, socket ).
Např. soubor je neúplný anebo i prázdný.
S#430 Co je java.lang.AutoCloseable, kde se využívá ?
Smyslem zavedení je automatické zavírání v try( ... ) od Javy 7.
Interfejs definující metody void close().
Splňuji ho třídy **Stream, **Reader, **Writer, **Channel, Scanner,
**Socket, ZipFile aj. Jeho potomkem je java.io.Closeable.
S#431 Uvedťe některé výjimky, které nejsou serializovatelné a proč ?
Žádné takové nejsou, neboť class Throwable implements Serializable
a tedy i Error-y jsou serializovatelné.
S#432 Uveďte některé třídy, které nejsou Serializable. A proč asi ?
lang: Object, System, Math, Thread, Process, Compiler, ClassLoader.
io:
***Stream,
util: Scanner, Arrays, Collections, Timer.
Některé obsahují jen statické členy: Math, Compiler, Arrays, Collections.
Jiné jsou měnlivé objekty: vlákna, proudy.
S#509 K čemu je dobrá metoda flush() ?
K fyzickému vypuzení dat z bufru (v operační paměti) výstupního proudu
do média. Žádoucí zejména pro síťové komunikace .
S#541 K čemu slouží a jak se používá metoda
System.out.printf
?
K formátování tisku. Má parametry ( String format, Object ... args )
Parametr args může obsahovat i primitivní hodnoty díky autoboxingu.
S#543 Jaký objekt je referován
System.err ?
java.io.PrintStream pro chybové hlášky.
T#074 Co je to vlákno ?
Jednak třída java.lang.Thread, jednak objekty této třídy, které jediné
mohou přijímat CPU čas a tedy projevovat (jakoby) vlastní aktivitu ?
T#075 Která metoda definuje chování vlákna ?
public void run( ) - instanční metoda třídy java.lang.Thread
T#076 Jakou metodou se thread spouští ?
public void start( )
T#077 Jak se trvale ukončí běh vlákna ?
Jen tím, že dojde k returnu z metody run tohoto vlákna, čímž JVM
mu nastaví stav dead. Metodou interrupt to nejde.
Zastavit vlákno lze zavrženou metodou stop - ale je to nebezpečné.
T#078 Jaké jsou možné stavy vlákna ?
(7): NEW, RUNNABLE, RUNNING, BLOCK, WAIT, LOCK, DEAD
T#079 Jaké jsou příčiny stavu BLOCK threadu ?
Spuštění io operace, zavolání metod sleep nebo join a čeká se na
jejich dokončení.
T#080 Co je to skupina threadů ?
Všechna vlákna jsou organizována ve stromu vláken a jsou jeho listy.
Vnitřní uzly jsou typu objekty typu ThreadGroup.
T#081 Co je to synchronizační monitor ?
Softwarový modul, jenž kontroluje zámky objektů a běh vláken.
T#082 K čemu slouží metoda o.wait() ?
Když vlákno musí čekat na přidělení nějakého zdroje a tedy nemůže
čerpat čas, zavolá metodu wait. To lze jen v synchronizovaném bloku,
tedy drží nějaký známek nebo zámky, kteréžto se ve stavu WAIT uvolní.
-10-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Vlákno přejde do stavu WAIT v poolu objektu o.
T#083 K čemu slouží metody o.notify() resp. o.notifyAll() ?
Převede nederministicky vybrané vlákno ze stavu WAIT do LOCK
resp. všechna vlákna byvše WAIT na objektu o.
Vlákno volající tyto metody musí držet zámek k objektu o,
jinak se vyhodí IllegalMonitorStateException.
T#084 Co je uvíznutí (deadlock) a jak mu zabránit ?
Zablokování vláken, následkem vzájemného neuvolnění potřebných objektů.
Stane se tak přechodem do stavu WAIT zúčastněných vláken.
Java to neumí vyřešit - obranou je dodržení pořadí žádostí o společné zdroje.
T#085 Co dělá metoda t.join() ?
Běžné vlákno zablokuje a čeká na ukončení vlákna t.
Vlákna se jako objekty nenavazují. Navazuje se na vykonanou práci.
T#086 Co se stane příkazem
vx.join(0); je-li vx vlákno ?
Běžné vlákno se blokuje jen na dobu 0 msec.
T#087 Co se stane příkazem
vx.join(500); není-li vx vlákno ?
Syntaktická chyba pokud objekt referovaný vx nemá metodu join.
T#088 Do jakého stavu přejde vlákno uspané jako Thread.sleep(...) po přerušení ?
Do stavu RUNNABLE.
T#089 Co dělá metoda isAlive() ?
Vrací true pokud vlákno bylo odstartováno a ještě se nevrátilo ze své
metody run(), jinak false.
T#090 Jaký je rozdíl mezi metodou sleep(...) a wait(...) ?
1. sleep je statická, definovaná ve třídě Thread, která uspí vlákno
ve stavu BLOCK po určitou dobu.
2. wait je finální, definovaná ve třídě Object, volatelná jen v
synchronizovaném bloku či metodě, která uvolní držené zámky a
převede vlakno do stavu WAIT z kterého se vymaní metodou
notify() nebo notifyAll() anebo po uplynutí určeného času.
T#118 Napište příklad kritické sekce jednak jako metodu, jednak jako blok.
synchronized void m1() { }
void m2() { synchronized(o){ } }
závorky bloku jsou povinné.
T#119 Co deklaruje interfejs java.lang.Runnable a k čemu slouží ?
abstract public void run();
Jako norma pro definici činnosti objektu typu java.lang.Thread
případně objektu kterému vlákno může předat řízení.
T#137 Napište příklad deklarace a spuštění vlastního vlákna .
class V extends Thread {
public void run() { ... }
}
new V( ).start();
T#138 K čemu slouží klíčové slovo synchronized ? Kam se dá všude napsat ?
K vytvoření kritické sekce, tj. metody či bloku do kterého může
vstoupit jen jedno vlákno. Do hlavičky metody
nebo do prefixu bloku s referencí na synchronizační objekt.
T#139 Co thread sdílí s ostatními thready a co každý vlastní jen on sám ?
Sdílí s nimi jediný strom threadů a objekty ke kterým dostal reference.
Nesdílí vlastní atributy a zejména vlastní program counter a stack.
T#148 K čemu slouží metoda wait( ), kde je definována a kde ji lze bez nehody zavolat ?
wait je finální, definovaná ve třídě Object, volatelná jen v
synchronizovaném bloku či metodě, která uvolní držené zámky a
převede vlakno do stavu WAIT z kterého se vymaní metodou
notify nebo notifyAll anobo po uplynutí určeného času.
T#149 Napište programové ukončení běhu vlákna. tj. bez použití metody stop( ) .
bool=false;
public void run() { while( bool ) { ... } }
public void run() { ... return ... }
-11-
C:\Users\cypher\Desktop\JAQ_2.0.txt
T#152
T#155
T#169
T#170
T#172
T#231
T#232
T#234
T#235
T#237
T#238
T#239
T#240
T#258
T#259
T#260
T#261
T#262
T#317
T#318
T#341
T#344
24. května 2012 13:47
public void run() { ... assert ... }
public void run() { ... throw ... }
K čemu slouží metoda join( long time ) a ve které třídě je definována ?
K blokaci vlákna, čekající na ukončení vlákna leč nanejvýš stanovený čas
Jak vznikne uváznutí ( deadlock ) a jak mu lze předejít ?
Když vlákna si vzájemně blokují přístup ke zdrojům.
Dodržováním dohody o posloupnosti přístupu ke zdrojům.
Která metoda definuje chování vlákna a jak se spouští ?
Instanční metoda run() třídy java.lang.Thread zděděná z interfejsu Runnable.
class Vlakno extends Thread { public void run(){ ... } }
new Vlakno().start();
Které objekty mohou být zařazeny do front na příděl času ?
Jen x, které splňují x instanceof Thread.
Co způsobí metoda notify(), kde je definována a kde ji lze bez nehody zavolat ?
Převede vlákno ze stavu WAIT do stavu LOCK.
Definovaná jako finální v java.lang.Object. V synchronized bloku či metodě
Zámek kterého objektu se použije v synchronized static metodě ?
Zámek popisného objektu třídy.
Lze užít takto interfejs: synchronized(Comparable.class) { ... } ?
Ano, synchronizačním objektem je popisný objekt interfejsu.
Vysvětlete chování:
synchronized( new Object() ) { ... }
Blok nebude fakticky kritickou sekcí, neboť každé vlákno si vytvoří
vlastní zámek a vstoupí do bloku. Je to nesmysl a ještě zdržuje.
Vysvětlete chování:
synchronized( Thread.currentThread( ) { ... }
Blok nebude nejspíš kritickou sekcí, neboť každé vlákno použije
vlastní zámek a vstoupí do bloku. Ledaže existuje jiné vlákno toto
vlákno užívá jako synchronizační objekt.
Může být konstruktor označen synchronized ?
Proč ano, proč ne ?
Ne. JVM sama zajišťuje synchronizaci konstruktorů.
Lze abstraktní metodu označit modifikátorem synchronized ?
Ne, nemá tělo a tedy ani nepředstavuje kritickou sekci.
Lze překrýt synchronizovanou metodu nesynchronizovanou ?
Ano.
Lze překrýt nesynchronizovanou metodu synchronizovanou ?
Ano.
Jak se dá zjistit, které vlákno právě probíhá daným blokem ?
Thread t = Thread.currentThread();
Jak zjistíte, které vlákno právě probíhá danou metodou ?
Thread t = Thread.currentThread();
Dá zjistit, které vlákno probíhá danou třídou a jak ?
Nedá, neboť třídou nic neprobíhá.
Které vlákno probíhá třídou java.lang.Object ?
Žádné, třídami nic neprobíhá.
Probíhá metodami, konstruktory, statickými a nestatickými inicializátory.
Napište příklad, jak změřit čas spotřebovaný nějakou metodou ?
long t0=System.currentTimeMillis();
m();
long time=System.currentTimeMillis()-t0;
Jak restarovat vlákno, dokončivší metodu run či zastavené metodou stop ?
Vlákno nelze nijak restartovat. Musí se vytvořit nové.
Proč neužívat k ukončení vlákna zneváženou (deprecated) metodu stop ?
Zastavení vlákna v neurčitém místě může zanechat hodnoty objektů
v nekonzistentním stavu.
Jakého typu (krom Object) může být x v přiřazení x=Runnable.class; //?
Class resp. Class<Runnable> či interfejsy třídy Class, tj.:
( Serializable, AnnotatedElement, GenericDeclaration, Type )
Které všechny objekty mohou být ve stavu WAIT ?
-12-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Pokud splňují
x instanceof java.lang.Thread && x.isAlive();
T#447 Lze odstartovat každý objekt který implementuje Runnable ? Proč ano, proč ne ?
Jen ten který je typu Thread.
T#448 Za jakých okolností lze odstartovat objekt, který neimplementuje Runnable ?
Za žádných, neboť odstartovat jen objekt typu Thread a každý takový
implementuje Runnable, neboť class java.lang.Thread implements Runnable.
T#453 Které metody se pojednávají přerušení vlákna a kde jsou definovány ?
void interrupt(), boolean isInterrupted() a static boolean interrupted()
všechny definované ve třídě Thread.
T#454 Co přesně dělá instanční metoda interrupt() ?
Ve stavech RUNNABLE / RUNNING jen nastaví vláknu this příznak přerušení.
Ve stavech WAIT / BLOCK join / BLOCK sleeping vláknu this zruší
příznak přerušení, změní mu stav na další tj. LOCK / RUNNABLE / RUNNABLE,
což pak ve stavu RUNNING hned vyhodí InterruptedException.
Ve stavu not ALIVE neuděla nic.
T#455 Za jakých okolností nastane vždy InterruptedException po zavolání interrupt() ?
Když je vlákno ve stavech WAIT / BLOCK join / BLOCK sleeping.
K vyhození vyjímky dojde jakmile bude vlákno ve stavu RUNNING.
T#456 Co přesně dělá instanční metoda interrupt() je-li vlákno RUNNABLE/RUNNING ?
Jen nastaví příznak přerušení.
T#457 Co přesně dělá instanční metoda isInterrupted() ?
Aniž mění příznak přerušení, vrátí true je-li nastaven, jinak false.
T#458 Co přesně dělá třídní metoda interrupted() ?
Zruší příznak přerušení, vrátí true byl-li nastaven, jinak false.
T#459 Jakými způsoby se může změnit stav vlákna BLOCK a na který přejde ?
Přejde na RUNNABLE dokončením join, sleep, I/O nebo interrupt().
T#460 Jakými způsoby se může změnit stav vlákna RUNNABLE a na který přejde ?
Přejde na RUNNING výběrem CPU schedulerem pro příděl CPU času.
T#461 Jakými způsoby se může změnit stav vlákna z RUNNING na RUNNABLE ?
Ukončením přídělu CPU času vnitřním rozhodnutím CPU scheduleru.
Požadavkem k ukončením přídělu CPU času metodou yield() .
T#462 Do kterých stavů může přímo přejít stav vlákna RUNNING ?
Do RUNNABLE, BLOCK, WAIT, LOCK, DEAD.
T#463 Do kterých stavů může přejít vlákno ze stavu NEW a jakými způsoby ?
Jen do RUNNABLE a to metodou start().
T#464 Do kterých stavů může přejít vlákno ze stavu DEAD a jakým způsoby ?
Do žádných jiných a žádnými. Vlákno existuje však jako objekt.
T#465 Jak se může změnit stav vlákna z RUNNING na WAIT a co je k tomu třeba ?
Jedině metodou wait(...) zavolanou v kritické sekci tj. synchronized
metodě či bloku - tedy držící zámky, které metoda wait uvolní.
T#466 Za jak může stav vlákna
RUNNING přímo přejít do stavu LOCK ?
Jen když vlákno žádá vstoupit kritické sekce, tj. do synchronized
metody či bloku, leč nezíská zámek referovaného objektu, neboť
kritická sekce je obsazena jiným vláknem.
T#467 Jakými způsoby se vlákno může vymanit za stavu WAIT a do kam přejde ?
Přejde do stavu LOCK vypršením WAIT času nebo notifikací metodami
notify() resp. notifyAll() nebo přerušením metodou interrupt().
T#468 Co se děje s vláknem ve stavu LOCK kam všude může přejít a jak ?
Čeká až mu monitor (nedeterministicky) přidělí zámek referovaného
objektu a převede vlákno do stavu RUNNABLE.
T#469 Jak se může vlákno ve stavu WAIT dostat opět do stavu RUNNING ?
Jen postupně přes stav
LOCK
a pak
RUNNABLE .
T#505 Co se stane je-li x typu Thread a zavoláte x.run( ) ?
Metodu provede Thread.currentThread a nikoli vlákno x.
To může mít nepříjemné důsledky.
T#535 Jak lze vícekrát odstartovat tentýž objekt typu Thread ?
Nelze - nanejvýš jednou a to pouze metodou start().
-13-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
T#599 Co se stane new Thread(){ public void run(int v){System.exit(v);} }.run(); // ?
Vytvoří se objekt dle anonymní třídy typu Thread, který se však neodstartuje.
Běžné vlákno provede prázdnou metodu run(), takže se vlastně nic nestane.
Tělo třídy { public void run(int v){System.exit(v);} je tam zcela zbytečně.
U#263 Jaký je význam hodnoty time: long time=System.currentTimeMillis(); ?
UTC čas uplynulý od 01 JAN 1970 00:00:00 v msec.
UTC = Universal Time Coordinated (občas korigovaný dle rotace Země).
U#299 Jaké hodnoty vrací funkce java.lang.Math.random() ?
Pseudonáhodná čísla typu double rovnoměrné rozdělená v<0.0, 1.0).
U#300 Jak se získají náhodná čísla s normálním (Gaussovým) rozdělením ?
Pomocí objektu třídy java.util.Random metodou nextGaussian()
U#301 Jak se získají náhodná čísla s Poissonovým rozdělením ?
To API Javy nemá. Leckde jinde např.: commons.apache.org/math/
U#302 Jak se získají náhodná čísla se Studentovým rozdělením ?
To API Javy nemá. Leckde jinde najdete na internetu.
U#303 Jakou má podporu komplexní aritmetika ?
V API Javy žádnou.
Hledejte jinde např.: commons.apache.org/math/
U#319 Co podporuje třída java.util.Arrays ?
Třídění, vyhledávání, vyplňování, porovnávání, kopírovaní a výpis polí
statickými metodami sort, binarySearch, fill, equals, copyOf, toString.
U#438 Co dělá metoda shuffle a kde je definována ?
Náhodně permutuje prvky kolekce List.
Statická metoda třídy java.util.Collections.
U#539 Jak zajistíte, aby třídění Arrays.sort(pole) nebylo ovlivněno jiným vláknem ?
Ježto metody třídy Array nejsou synchronized, je nutno zřídit obklopující
blok synchronizovaný na pole
synchronized(pole){ Arrays.sort(pole); }
U#540 Jak zajistíte, aby všechny metody třídy ArrayList byly synchronizovány ?
List list = Collections.synchronizedList( new ArrayList() );
U#542 Uveďte znaky Formatteru pro základní typy při formátování řetězů a tisku ?
d - celé číslo dekadicky, x - hexadecimální, f - číslo s desetinnou tečkou,
e - exponenciálně, c - znak, s - string, t - čas
U#565 K čemu slouží třída java.util.BitSet a jaké má metody ?
K vytvoření indexované dynamické množiny hodnot typu boolean.
get/set n-tý bit, logické operace and, andNot, or, flip, intersect
na množině bitů, cardinality - počet true bitů, ...
V#001 Co je to byte-kód a jak se zpracovává ?
Vnitřní forma javského programu je výsledkem kompilace.
V runtime JVM ji nejdříve verifikuje a pak interpretuje.
Anebo lépe v runtime ji ještě JIT přeloží do kódu platformy,
čímž program běží rychle jako v C.
V#023 Co je JIT (Just In Time)?
Překlad byte kódu do instrukcí platformy v runtime.
V#003 Jak je zajištěna nezávislost Javy na platformě ?
Žádný její rys není závislý na implementaci.
V#042 V které části operační paměti se ukládají objekty ?
Na haldě.
V#043 V které části operační paměti se ukládají lokální proměnné ?
Do aktivačních záznamů na zásobníku.
Zásobníky jsou vlatnictvím vláken.
V#128 Jak se vytvoří objekt, kde je alokován v čase běhu a co obsahuje ?
Pomocí konstruktoru, na haldě, nestatické atributy.
V#131 V jakém případě lze objekt zrušit, jak a kdy se to provádí ?
Není-li referován z žádného živého vlákna.
Garbage collectorem, JVM při nedostatku paměti nebo programaticky System.gc()
V#157 Kdy a jak se inicializují statické atributy třídy v čase běhu ?
Při natažení třídy do paměti přiřazením hodnot a případně
statickými inicializátory.
-14-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
V#158 Kdy a jak se inicializují atributy interfejsu v čase běhu ?
Při natažení interfejsu do paměti přiřazením hodnot.
V#256 Co je jar a jaké má vlastnosti ?
Java ARchive je extenze zipu, případně se souborem MANIFEST.MF
v adresáři META-INF. I dalších kvalifikovaných adresářů META-INF
může být libovolně.
V#266 Co je javadoc ?
Součást JDK.
Program, který z dokumentačních komentářů vytváří doclety.
V#286 Jaké hlavní vstupy má kompilátor ?
soubory
*.java a classpath
V#287 Co je výstupem kompilátoru je-li zdroj:
interface $ {
}
// ?
soubor $.class
V#369 Kde najdete v JDK programy java, javac, javadoc a k čemu slouží ?
V jdk***/bin, je to: interpret, kompilátor, dokumentátor.
V#370 Co je JRE a kde se v něm nalézá program javac ?
Java Runtime Environment - obsahuje interpret java a API.
Neobsahuje vývojové prostředky jako:
kompilátor javac, dokumentátor javadoc, debugger apod.
V#002 Kdy a jak se inicializují statické proměnné třídy ?
V okamžiku zavedení třídy na implicitní hodnoty
nebo na hodnoty inicializačních výrazů
nebo statickými inicializátory.
W#056 Co je a co obsahuje java.awt ?
Balíček a podbalíčky Abstract Window Toolkit zajišťují GUI
vázaný na platformu. Obsahuje řadu interaktivních kompontent
a příslušenství. Podbalíčky .event .color .geom .image .print
W#060 Uveďte nejdůležitější interaktivní komponent v AWT.
Button, TextField, TextArea, Choice, List, Canvas, ScrollBar,
MenuBar, Menu, MenuItem, PopupMenu
W#061 Co je AWT kontejner, uveďte podtřídy definující kontejnery.
Objekt třídy java.awt.Container pro ukládání grafických
komponent a jejich rozmisťování. Container má přímé potomky
Panel, ScrollPane a Window.
W#062 Ve které třídě v AWT je definována metoda repaint a k čemu slouží ?
V java.awt.Component, definuje co má být vykresleno
awt-vláknem.
W#063 Ve které třídě v awt je definována metoda repaint a k čemu slouží ?
V java.awt.Component, zadává požedavek na překreslení komponenty
případně její obdélníkové části.
W#065 Jakou metodou se přidává objekt do kontejneru ?
add( Component c, ... )
W#066 Co je to layout manager ?
Objekt který rozmisťuje nějakým způsobem grafické
komponenty v grafickém kontejneru.
W#067 Uveďte standardní typy layout managerů.
awt: Flow- Grid- Border- GridBag- Cardswing: Box- SpringW#068 Jak se chová FlowLayout ?
Rozmisťuje komponenty do řádek zleva doprava a shora
dolů, jakoby formou přetékavého textu.
Komponenty zachovávají svoji velikost.
Umožňuje alignment levý , pravý, středový.
W#069 Jak se chová GridLayout ?
Rozmisťuje komponenty do buněk pravidelné mřížky.
Komponenty zabírají celé buňky.
W#070 Jak se chová BorderLayout ?
-15-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Rozmisťuje komponenty do pěti oblastí: North, West, Center,
East a South. Komponenta zabere vždy celou oblast.
W#071 Jak se chová CardLayout ?
Jako balíček karet, viditelná je jen ta vrchni.
W#072 Co umožňuje GridBagLayout ?
Rozmisťuje komponenty do buněk nepravidelné mřížky.
Komponenty mohou obsadit i více buněk tvořících obdélník.
W#073 Co znamená setLayout( null ) ?
Neužití standardních layoutů. Komponenty rozmisťuje pragramátor
metodou setBounds.
W#117 Které metody spustí volání metoda repaint( ) jednak v awt, jednak ve swingu
V awt:
update( Graphics g )
ve swingu: paint( Graphics g )
W#121 Co je a co umožňuje objekt třídy java.awt.GridBagLayout ?
Objekt typu LayoutManager.
Rozmístění komponent v kontaineru do buněk nepravidelné mřížky.
Komponenta může obsadit rektangulárně i více buněk.
W#122 Jaké hodnoty obsahuje java.awt.Point a co znamenají ?
int x, y; Pozici od levého horního rohu tj. ve 4. kvadrantu.
W#123 Jaké hodnoty obsahuje java.awt.Dimension a co znamenají ?
int width, height;
Rozměr obdélníku.
W#136 Uveďte pořadí předků tříd java.awt.Frame a java.awt.Panel.
Object, Component, Container, Window, Frame
Object, Component, Container, Panel
W#252 Jaké je úplné jméno třídy Color ? V kterém balíčku sídlí ?
java.awt.Color, v java.awt
W#253 Jaké jsou barevné složky třídy Color ?
ARGB
W#254 Přibližně kolik barevných odstínů lze vytvořit třídou Color ?
Pro opacitu: 2^24 = 16 777 216
S užitím poloprůhlednosti 2^32 = cca 4 mld.
W#255 Vytvořte poloprůhlednou fialovou barvu a zdůvodněte.
Color col = new Color( 255, 0, 255, 128 ); // typy int
Color col = new Color( 1, 0, 1, 0.5f );
// typy float
W#275 Jaký je defaultní LayoutManager pro Frame ?
BorderLayout
W#276 Jaký je defaultní LayoutManager pro Applet ?
FlowLayout, ten přejal od Panelu (svého přímého předka).
W#304 Napište jak pípnout ?
Toolkit tk=Toolkit.getDefaultToolkit();
tk.beep();
W#305 K čemu slouží třída Toolkit a kde je definována ?
K zíkání informací z vnějšího prostředí GUI. V java.awt.
W#306 Jaké třídy umožňují zíkávat některé informace z OS.
System, Properties, ProcessBuilder.
W#527 V které třídě jsou definovány metody setLayout(...) a getLayout() ?
V java.awt.Container, což je přímý předek java.awt.Frame,
java.awt.Panel,
javax.swing.JComponent aj.
W#575 Získejte zelenou složku pixelu reprezentovaného jako int pix:
//?
int green = pix>>8 & 255;
nebo
green = (pix & 0xFF00)>>8;
Pozn.: >> má vyšší prioritu než & .
X#048 Co je to výjimka a čím je reprezentovaná ?
Jednak třída Exception ze stromu Throwable,
jednak objekt typu Exception popisující nehodu v runtime.
X#049 Je výjimka objekt, třída, interface anebo událost ?
Vyjímka je objekt třídy Exception vytvořený coby popis konfliktu.
X#050 Napište příklad implicitního vzniku výjimky.
-16-
?
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
(new int[0])[0]=0/0; Jakou to vyhodí ?
X#051 Jakou vyjímku vyhodí příkaz (new int[0])[0]=0/0; ?
java.lang.ArithmeticException
X#052 Napište příklad explicitního vzniku výjimky.
throw new IllegalArgumentException("Takhle to nejde");
X#053 Uveďte příklad použití příkazu try.
try ( acloseable ; bcloseable ; ... ) {
...
}
catch( NullPointerException | ArithmeticException ex ) { ... }
catch( final Exception ex ) { ... }
finally { ... }
X#054 Kolik parametrů může mít klauzule catch a jakých jsou typů ?
Právě jeden - ten však může být specifikován více subtypy
Throwable (oddělené | ) aniž některý je subtypem jiného.
X#055 Jak se chová blok finally ?
Je-li definován, je proveden vždy.
X#132 Napište příklad explicitního (tj. záměrného) vzniku, vyhození a odchycení výjimky.
try {
throw new NullPointerException();
}
catch ( Exception ex ) {
}
X#146 Napište definici vlastní nekontrolované výjimky a vyhoďte tuto výjimku.
class V extends RuntimeException { }
throw new V( );
X#163 K čemu slouží, kde se píše a kdy se aktivuje klauzule finally ?
K úklidu klauzule tcf nebo tf, na konci, v každém případě je-li přítomna.
X#230 Čím se liší výjimky typu RuntimeException od ostatních ?
Jsou unchecked , tj. nekontrolované kompilátorem.
X#236 Kde všude lze napsat klíčové slovo
throws a co případně za ním ?
V hlavičce metody či konstruktoru. Seznam tříd typu Throwable.
X#292 Je vyhozená vyjímka objekt, třída, událost nebo anotace ?
Objekt třídy Exception potomek třídy Throwable.
X#345 Které všechny objekty lze vyhodit pomocí operátoru throw ?
Pokud splňují
x instanceof java.lang.Throwable,
typicky Exception a Error - ale nejen.
X#452 Proč jsou Error a výjimky typu RuntimeException nekontrolované ?
Error jsou těžko předvídatelné a většinou nenapravitelné.
RutimeException jsou potíže způsobené převážně programátorem
během vývoje. A mentorování kompilátorem by bylo zbytečně zatěžující.
Y#401 Kde lze deklarovat typové parametry ?
Ve hlavičkách tříd, interfejsů, konstruktorů a metod.
Y#402 Napište příklad deklarací typových parametrů třídy a metody.
... class Jmeno < T1, ... Tn > extends ... implements ... { }
... < T1, ... Tn > Ti jmeno ( .... ) throws ... { ... }
Y#403 Jaká je syntax deklarace typových parametrů ?
< T1 , T2, ... Tn >
Y#404 Napište příklad deklarací typových parametrů abstraktní metody.
abstract <U,V, W extends Number> W m(U u, V v) ;
Y#405 Jaké identifikátory se obvykle užívají pro typové parametry ?
T - typ, tj. třída či interfejs, E - element, N - number,
K - klíč, V - value
Y#406 Co znamená a co jsou X,A,B,C ve vymezení <X extends A & B & C> ?
X - typová proměnná, A - třída nebo interfejs,
B,C - interfejsy, & - konjunkce. Tím X vymezuje množinu
přípustných objektů.
-17-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Y#407 Co znamená přechod na raw type ? Napište příklad jak nastane.
List lst = new ArrayList<String>();
Y#408 Co je diamond operátor a jaký je jeho smysl ?
Píše se jako <> ale i < > slouží pro typovou inferenci
Y#409 Kde se všude píše diamond operátor tj. <>
?
Jen v konstrukci, např.: List<Float> a = new ArrayLst<>( ... ) .
Y#410 Co je a kde se vyskytuje žolík ( wildcard )
?
Žolík, tj. ?, představuje množinu vymezených typů.
Samotný ? je ekvivalentní s ? extends Object
Y#411 Jak může být reference typově vymezena žolíkem ?
Shora:
? extends Typ
anebo zdola:
? super Typ .
Z#006 Jak se v Javě provádí dereference odkazů?
Implicitně při přístupu k položkám.
Z#007 Jak lze zjistit délku kteréhokoli referenčního typu?
Nelze.
Z#008 Jak lze přetypovat referenční typ na int?
Nelze.
Z#009 Jak se v Javě zduplikuje objekt?
Metodou A a2 = a1.clone();
kde :
class A implements Cloneable {
public A clone() { ... return (A) super.clone(); ... }
}
Z#010 Uveďte příklad deklarace trojúhelníkového pole.
short triagle[][]={ {1}, {2, 3}, {4, 5, 6} };
Z#011 Co všechno znamená modifikátor final?
Proměnn0u (instanční, třídní, lokální, parametr) nutno nastavit
nastavit, ale jen jednou.
Metodu nelze překrýt.
Třída nemůže mít potomky.
Z#012 Co musí splňovat překrývající (overriding) metoda ?
Musí mít shodnou signaturu, kompatibilní návratový typ,
nesmí mít přísnější modifikátor přístupu,
a nesmí rozšiřovat stigma kontrolovaných vyjímek.
Z#013 Co musí splňovat překrývající (overriding) konstruktor ?
Nic, neboť konstruktory se nedědí.
Z#014 Co je nativní metoda ?
Metoda napsaná v jiném jazyce s modifikátorem native.
Místo těla má jen středník.
Z#015 Co je nativní nelokální proměnná, tj. s modifikátorem native ?
Syntaktická chyba.
Z#016 Co je nativní třída, tj. s modifikátorem native ?
Syntaktická chyba.
Z#017 Co je nativní interfejs ?
Syntaktická chyba.
Z#018 Proč není v Javě zaveden typ union?
Pomocí unionu by bylo možno obejít striktní typovou kontrolu.
Z#019 Co je třída ?
Konstrukt definující množinu dat a operací nad těmito daty.
Z#020 Jaká omezení má statická metoda oproti obyčejné (dynamické) metodě ?
Statická metoda nemůže přímo přistupovat k instančním proměnným ani
přímo volat instanční metody třídy. Přistoupict resp. volat může
prostřednictvím reference k objektu.
Z#021 Co je to objekt ?
Objekt je jedna instance instančních proměnných třídy.
Z#022 Jaký je rozdíl mezi objektem a instancí třídy.
Žádný.
Z#024 Jak se inicializují instanční proměnné ?
Nejdříve na implicitní hodnoty,
-18-
C:\Users\cypher\Desktop\JAQ_2.0.txt
Z#025
Z#026
Z#027
Z#028
Z#029
Z#030
Z#031
Z#032
Z#033
Z#034
Z#035
Z#036
Z#037
Z#038
Z#039
Z#040
Z#041
24. května 2012 13:47
pak případně na hodnoty přiřazené v deklaraci atributu,
dále případně na hodnoty přiřazené postupně nestatickými
inicializátory a nakonec případně přiřazené konstruktorem.
Co je to implicitní konstruktor ?
Konstruktor bez parametrů, který je implicitně nadeklarován
pokud není není deklarován žádný explicitní konstruktor.
Které operátory umožňují explicitní volání konstruktoru?
this, super, new
Co jsou to proměnné třídy (class variables), jaký mají modifikátor ?
Proměnné, které vznikají v okamžiku zavedení třídy do paměti
a identifikují se jménem třídy a jménem proměnné.
Tyto proměnné mají modifikátor static.
Jak a kdy se provádí rušení objektů ?
Garbage collectorem, jenž se aktivuje buď automaticky při nedostatku paměti
na haldě anebo zavoláním metody System.gc .
Jak se provádí rušení tříd ?
Výmazem z balíčku na disku.
Kdy může být objekt zrušen ?
Neexistuje-li nedémonické vlákno od něhož vedou reference k objektu.
To vlákno může být i neživé.
K čemu slouží metoda finalize a kde je definována ?
Slouží k poslednímu přístupu k objektu jenž garbage collector chce zrušit.
Definována je v java.lang.Object jako prázdná.
Jak se vytváří podtřída ( subclass ) a jak podinterfejs ( subinterface )?
Obé extenzí s užitím klíčového slova extends.
Jak se jmenuje univerzální nadtřída a v kterém je balíčku?
java.lang.Object
Jak se jmenuje univerzální nadinterface a ve kterém je balíčku?
Neexistuje, tudíž v žádném.
K čemu slouží klíčové slovo super ?
super ( .. ) volá konstruktor přímé nadtřídy,
super. referuje člen nadtřídy,
< ... super ... > k vymezení typového parametru
K čemu slouží klíčové slovo this ?
this ( .. ) volá konstruktor téže třídy,
this. referuje člen téhož objektu.
Které metody nemohou být překryty (overriden) ?
final a private.
Překrývat lze jen metodu nestatickou jinou nestatickou
anebo statickou jinou statickou.
Co je to abstraktní třída a jaké má vlastnosti ?
Třída vyznačená modifikátorem abstract.
Má alespoň jeden konstruktor, ale nemůže vytvářet objekty.
Může mít abstraktní metody. Její statická část tj. atributy, metody
a inicializátory jsou zcela funkční.
Co je abstraktní metoda ? Uveďte příklad.
Nestatická metoda má středník místo těla.
Nemůže být static, private, final ani synchronized.
Jaký je rozdíl mezi abstraktní a prázdnou metodou ? Uveďte příklad.
abstract int m1( ... ); nemá tělo jen středník, má zvolený návratový typ
void m2( ... ) {} má prázdné tělo, defaultní return, návratový typ void
Jak se liší abstraktní třída a interface ?
Abstaktní třída je potomkem nějaké třídy, může implementovat interfejsy,
má alespoň jeden konstruktor, může mít konkrétní metody, nestatické proměnné,
statické i nefinální proměnné, statické i nestatické inicializátory.
Interfejs může extendovat libovolný počet interfejsů.
Může mít jen statické, finální inicializované atributy,
-19-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
abstraktní metody a vnořené interfejsy a třídy.
Z#044 Co znamená klíčové slovo package a kde je možné ho použít ?
Package (balíček) je sbírka věcně souvisejících tříd a interfejsů
tvořící pro ně jmenný prostor a to ve stejnojmenných adresářích
jednak ve zdroji, jednak v přeložené kódu.
Tím se zajišťuje pořádek a ochrana.
Jeden package patří jen jednou na začátek zdrojového souboru.
Z#045 K čemu slouží příkaz import ?
Definuje cestu ke třídám a interfejsům a čímž netřeba uvádět
ve zdrojich úplná jména. Zlepšuje se tím čitelnost zdrojů.
Z#046 Jaké jsou modifikátory přístupu a co znamenají ?
public - odevšad přístupný,
protected - jen členům v balíčku a potomkům typu v jiných balíčcích,
nepsaný package-protected tzv. friend - jen členům v balíčku,
private - přístup jen v typu.
Z#047 Vyjmenujte alespoň 5 standardních javských package a k čemu slouží.
Např.: java .lang .util .io .net .awt .awt.event , javax .swing
Z#110 Jak lze využít abstraktní konstruktor ?
Nijak, neboť neexistuje.
Z#111 Co jsou instanční proměnné, podle čeho je poznáte a kde jsou alokovány v čase běhu?
Jsou to atributy objektů, jsou nestatické a tedy nemají
modifikátor static, alokovány jsou na haldě.
Z#112 Které metody mohou být překryty ( overriden ) instanční nebo třídní ?
Obé, ale jen nestatickou jinou nestatickou či statickou jinou statickou.
Z#113 Co tvoří signatury metod a konstruktorů ?
Jméno a sekvence typů parametrů.
Nikoli návratový typ, modifikátory, stigma (tj. throws-list )
Z#114 Jaký je rozsah platnosti formálních parametrů konstruktoru ?
Celé tělo konstruktoru.
Z#115 Napište příklad abstraktní metody. Kdy může mít modifikátor static ?
abstract int m( );
Nikdy.
Z#116 Co způsobí
příkaz String t = super.toString( ); ?
Zavolá metodu toString přímého předka.
Z#124 Kde všude lze napsat this( ); a co způsobí ?
Jen jako první příkaz v konstruktoru, zavolá bezparametrový konstruktor téže třídy.
Z#126 Co všechno lze deklarovat ve třídě ?
Atributy, metody, konstruktory, inicializátory,
vnořené třídy a interfejsy, vnitřní třídy, výčty tj. enum, anotace.
Z#127 Co je abstraktní třída? Kdy může mít modifikátor final? Kolik má konstruktorů ?
Třída s modifikátorem abstract. Nemůže. Alespoň jeden.
Z#129 Co je anonymní třída a jak ji lze vytvořit ?
Vnitřní třída bez hlavičky použitelná pro vytvoření jediného objektu.
X o = new X( ) { ... }
kde X je třída anebo interfejs.
V těle je možné či nutné přepsat metody tak, aby vznikla kontrétní třída.
Z#134 Napište příklad zavolání metody předka.
super.m(...);
Z#135 Co způsobí příkaz
String t = super.super.toString( ); ?
Syntaktickou chybu při kompilaci.
Z#140 K čemu slouží a kde je definována metoda finalize( ) ?
K přístupu k objektu, který GC chce zrušit, v java.lang.Object.
Z#141 Napište test zda objekt referovaný proměnnou q implementuje interface W.
q instanceof W
Z#142 Napište test zda objekt referovaný proměnnou p je typu T.
p instanceof T
Z#143 Jaké jsou modifikátory přístupu tříd ?
Pro "vrcholové"
: public, "friend"
-20-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Pro vnitřní/vnořené: public, "friend", protected, private,
Z#144 Podle čeho poznáte, že metoda je přetížená (overloaded) ?
Má stejné jméno jako jiná metoda v témže typu - leč jinou signaturu.
Přesněji řečeno: přetížené je jen jejich jméno.
Z#145 Co umožňuje polymorfismus ? Co je a čeho se týká pozdní vazba ?
Pojednat heterogenní kolekce podle společného nadtypu, přičemž chování
je specificky implementované dle jednotlivých podtypů.
Z#147 Kde všude lze napsat super( ); a co způsobí ?
Jen jako první příkaz v konstruktoru, aktivuje konstruktor přímého předka.
Z#156 Kde všude lze deklarovat lokální proměnné a kde jsou alokovány v čase běhu ?
V metodách, konstruktorech, inicializátorech a blocích.
V aktivačních záznamech zásobníků vláken.
Z#159 Jak lze změnit typ atributů interfejsu v čase běhu ?
Nelze.
Z#160 Jak lze přidat třídě metody v čase běhu ?
Nelze.
Z#161 Co je implicitní tj. defaultní konstruktor, jeho parametry, obsah a chování ?
Jenž vznikne není-li žádný , žádné, aktivuje konstruktor bez parametrů
přímého předka. Object však nemá předka.
Z#162 Co jsou to třídní proměnné ( class variable ), jak se identifikují a kde sídlí ?
Unikátní proměnné, mají modifikátor static, v popisném objektu třídy.
Z#173 Napište příklad statického inicializátoru. Kolik jich třída může mít ?
static { ... } , libovolně.
Z#175 Co způsobí příkaz String t = super.this.toString( ); ?
Syntaktickou chybu při kompilaci.
Z#176 Co způsobí příkaz String t = this.this.toString( ); ?
Syntaktickou chybu při kompilaci.
Z#177 Co způsobí příkaz String t = (super).toString( ); ?
Syntaktickou chybu při kompilaci.
Z#178 Co je java.lang.Object a jaké má dostupné metody ?
Jednak základní třída API, kořenem stromu všech tříd,
jednak objekt jenž je základem všech objektů.
public:
equal, hasCode, toString,
final: getClass, wait, notify, notifyAll,
protected: finalize, clone.
všechny tyto metody jsou
Z#179 Je třída java.lang.Object finální ? Proč ano, proč ne ?
Není. Byla-li by nemohla by mít potomky a tudíž by byla v API jediná.
Z#181 Je třída java.lang.Object synchronizovaná ?
Ne, žádná třída není. Synchronizovat lze jen metody.
Z#182 Je třída java.lang.Class finální ? Proč ano, proč ne ?
Ano, je příliš důležitá pro indentifikaci objektů.
Z#183 Je třída java.lang.Class Serializable ?
Ano.
Z#184 Je objekt typu java.lang.Runnable serializovatelný ?
To nelze určit, neboť interfejs Runnable není Serializable.
Záleží jaká třída objekt zkonstruovala.
Z#185 Jaký je rozdíl mezi instanční a třídní proměnnou ?
Instanční sídlí v každém vytvořeném objektu,
třídní je unikátní a sídlí v popisném objektu třídy.
Z#186 Jaký je rozdíl mezi instanční a třídní metodou ?
Třídní má modifikátor static, je viditelná ze statického i nestatického
kontextu třídy, má přístup ke statickému kontextu vlastní či referované
třídy. Nemá přístup k nestatickému konktextu.
Instanční se vztahuje k referovanému objektu a i přístup k jeho
statickému konktextu.
Z#187 Jak se vytvoří instance třídy ?
-21-
C:\Users\cypher\Desktop\JAQ_2.0.txt
Z#188
Z#189
Z#190
Z#191
Z#192
Z#193
Z#194
Z#195
Z#196
Z#197
Z#198
Z#199
Z#200
Z#201
Z#202
Z#203
Z#204
Z#205
Z#206
Z#207
Z#208
Z#209
Z#210
24. května 2012 13:47
Instance třídy čili objekt operátorem new na konstruktoru,
klonováním, metodou newInstance() na typu Class nebo deserializací.
Co je podtřída (subclass) a jak se vytvoří ?
class Subclass extends Třída implements .... { ... }
Co je dědičnost ?
Možnost typu (potomka) získat hodnoty a funkcionality nadtypu (předka).
Čeho se týká přetížení a překrytí ?
Prvé se týká metod a konstruktorů téže třídy a metod téhož interfejsu,
mající shodná jména avšak rozdílnou signaturu.
Druhé se týká metod typu a jeho podtypu mající shodnou signaturu.
K čemu všemu se užívá klíčové slovo super ?
- super. odkazuje k nestatickému členu (přímého) předka,
- super(...) znamená volání konstruktoru přímého předka.
K čemu všemu se užívá klíčové slovo this ?
- this. odkazuje k nestatickému členu téže třídy,
- this(...) znamená volání konstruktoru téže třídy.
K čemu slouží čárky v klausuli for
?
Umožňují vložit do inicializace i do modifikace více příkazů.
Např.:
for ( int i=0, j=10; i<j ; i++, j--, tk.beep() ) { ... }
Kde všude lze ve zdrojovém kódu použít dvojtečku ?
Za návěštím, v ternárním výrazu, v case a default a ve for( e : c )
a v annotaci.
Co je návěští (label), kde ho lze uvést ? Uveďte příklad zápisu.
Před příkazy cyklu. Případně odkaz na návěští za break či za continue.
CYC1: while (...) { ... continue CYC1; ... break CYC1; ... }
Co je finální třída ?
Ta s modifikátorem final. Nelze od ní vytvořit subclass.
K čemu slouží programový konstrukt interface ?
K definici abstraktních metod a statických konstant.
Co je finální interfejs ?
Nesmysl.
Má Java vícečetnou dědičnost ?
Tříd ne, interfejsů ano.
Co je klíčové slovo
instanceof
a k čemu slouží ?
Boolevský operátor, určí zda objekt patří do stromu referenčního typu,
např.:
o instnceof T
Co je balíček (package) a k čemu slouží ?
Kvalifikovaný jmenný prostor sloužící k uložení tříd a interfejsů.
K čemu všemu se užívá klíčové slovo import ?
Ke zjednodušenému zápisu typů ve zdrojovém kódu.
Kdykoli lze užít úplné jméno typu - např. java.awt.List
Co znamená import static ?
Import jen statických členů či jen určitého členu uvedené třídy .
Co je kvalifikované jméno třídy ?
kvalifikované jméno balíčku . jméno třídy
Co je kvalifikované jméno interfejsu ?
kvalifikované jméno balíčku . jméno interfejsu
Které balíčky se importují defaultně ?
Jen java.lang.
Která třída je implicitním předkem v definici třídy ?
java.lang.Object
Který balíček obsahuje třídu java.lang.Object ?
java.lang.
Který balíček obsahuje třídu Thread ?
java.lang.
Jaký je rozdíl mezi typy Double a double ?
Obalová třída (wrap class) pro primitiv a primitivní typ (64 bit).
-22-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Z#211 Co je autoboxing ?
Automatické zabalování (boxing) a rozbalování (deboxing)
primitivů do objektů pomocí obalových tříd (wrapped classes).
Z#212 Co znamená ve zdrojovém kódu Javy slovo unsigned ?
Podle konvence jen jméno proměnné. Java nemá takový modifikátor.
Z#213 K čemu se užívá klíčové slovo assert ?
Zevně ovladatelný test podmínky, pro false vyhazuje AssertionError.
Z#214 Jaká je javská konvence psaní id: krysí, psí, velbloudí či kravská ?
Velbloudí jako DvouhrbýDromedárSaharský.
Z#215 Co jsou přetížené operátory ? Má Java nějaké ? Které ?
Symbol operátoru je využíván pro rozdílné operace např. dle kontextu.
Jen plus (+) užitý pro aritmetické sčítání či zřetězení.
Z#216 Jaká písmena lze připojit za číselný literál a co znamenají ?
d, D, f, F, l, L
Z#217 Jak lze změnit typ existujícího objektu ?
Nelze. Lze na něj odkázat jen jinou příhodnou referencí typu.
Z#218 Je-li jméno třídy r.s.t.MojeTrida, co znamenají písmena r,s,t ?
Jméno balíčku r a podbalíčku s, t a též relativní cestu uložení.
Z#219 Při volání metody se parametry předávají referencí anebo hodnotou ?
Hodnotou.
Z#226 Co udělá příkaz: System.out.println( new int[0x29] . length ); //?
Vytvoří jinak nepoužitelné pole int[41], vytiskne 41 a newline.
Z#227 Jak se vytváří vícerozměrné pole ?
Skládáním vždy o jednu méněrozměrných.
Z#228 Kde všude lze použít hranaté závorky ?
Ve vyznačení reference na pole, délky pole a prvku pole.
Z#229 Co znamená RTTI a k čemu slouží ?
Run Time Type Identification umožňuje v běhu aplikace-apletu
zjistit povahu objektů a primitivů.
Z#233 Jak se zachová kompilátor pro řádek:
abstract interface _ {} // ?
Zkompiluje a vytvoří ve jmenném prostoru soubor _.class
.
Z#242 K čemu je dobrý privátní konstruktor ?
Pro skrytí před vnějším uživatelem a pro omezení počtu vytvářených
instancí třídy.
Např. 0 - System, Math, Collections, 1 - pro singletony - Registry
.
Z#244 Může být konstruktor abstraktní ? Proč ano, proč ne ?
Ne, nemělo by to smysl - konstruktory se nedědí.
Z#245 Může mít konstruktor modifikátor protected ? Proč ano/ne ?
Ano.
Z#246 Může být konstruktor privátní ?
Proč ano/ne ?
Ano pro tvorbu jen omezeného počtu objektů: Singleton ne žádného Math.
Z#247 Může mít definice konstruktoru náratorý typ void ?
Proč ano, proč ne ?
Ne, přestane být konstruktorem - změní se na metodu-proceduru.
A porušuje jmennou konvenci (pokud začíná velkým písmenem).
Z#248 Lze v těle konstruktoru užít příkaz return; ?
Ano, i vícekrát. Vždy však bez návratové hodnoty.
Z#249 Lze v těle konstruktoru užít příkaz return this; ?
Ne, jen returny bez návratové hodnoty.
Z#250 Lze v těle konstruktoru volat více konstruktorů téže třídy nebo nadtřídy ?
Ne, neboť this(...) anebo super(...) musí být jen jako první.
Z#264 Co je to a kam to lze napsat :
/** ... */
?
Dokumentační komentář. Před definici: typu, nelokální proměmné
konstruktoru a metody.
Z#265 Co je dokumentační komentář a kde se vyskytuje ?
Komentář /** ... */ vhodný pro doclety balíčků, typů, konstruktorů,
metod a atributů.
Z#267 Napište řádkový komentář !
-23-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
// Takhle na konci řádky
Z#268 Napište blokový komentář .
/* Takhle třeba
... Nazdar !!!
*/
Z#269 Co se stane:
System.out/**BLA**/.println/* Nazdar*/(/* AHOJ */);
// ?
Vytiskne se prázdný řádek, neboť kompilátor komentáře vynechá.
Z#270 Co je mělké a hluboké klonování ?
Mělké: skutečná kopie objektu s primitivními typy a referencemi.
Reference však odkazují na tytéž objekty jako vzor. Metoda clone();
Hluboké: kopíruje se všechny referované objekty, tj. celý graf.
Z#273 Co se vytiskne: System.out.println( new int['Z']['Y'] );
?
[[I@ a hashCode
Z#280 Které slovo není jméno (id): in println лошадь3 \u0041 _$$ T.etc x00FFL ?
Žádné, každé je platné jméno.
Z#281 Co je třeba, aby to běželo:
new \u0041().\u0061();
//?
Aby přístupná třída A s konstruktorem A() mající
metodu
a() .
Např.:
class A { void a() {} }
Z#282 Jaké jsou modifikátory přístupu metod ?
Pro konkrétní : public, protected, "friend", private
Pro abstraktní: public, protected, "friend"
Z#283 Čím končí řádkový komentář ?
Koncem řádky ( CRLF nebo NL ).
Z#284 Jaký bude výsledek
int i; i++10;
// ?
Syntaktická chyba.
Z#285 Které klíčové slovo musí obsahovat tělo každé funkce ?
return výraz ;
Z#289 Co se stane neodpovídá-li žádný case hodnotě řídící proměnné ve switch ?
Pokud obsahuje klíčové slovo default přejde řízení k němu,
jinak na sekvenčně další příkaz.
Z#290 Jakými způsoby lze ukončit cyklus while ?
podmínkou v hlavičce nebo pomocí break, return, vyhozením vyjímky
či chyby nebo continue do vnějšího cyklu,
Z#291 Kde se všude může užít znak % ?
Jako modulo (zbytek po dělení) nebo příznak ve formátování.
Z#293 Metody jsou buď procedury anebo funkce. V čem se liší ?
Procedura má návratový typ void, funkce jiný a musí vracet hodnotu.
Z#294 Může být návratový typ Cloneable? Např.: protected Cloneable m(){...}
Ano, návratový typ může být i kterýkoli typ tedy i interfejs.
Z#295 Co znamená tato řádka:
_();
// ?
Volání instanční nebo třídní metody bez parametrů.
Metoda však porušuje konvenci jmen a nejspíš to ani není sloveso.
Z#296 K čemu je interfejs, jenž nic nezdědil a má prázdné tělo - znáte takové ?
To je tzv. tagging interfejs informuje o schopnost či povolení.
Např.: Serializable, Cloneable, ...
Z#298 Kde se všude užívá znak * a v jakém významu ?
Ve výrazu jako násobení, v dokumentační a blokových komentářích,
a v příkazu import ve smyslu všech položek v daném adresáři.
Z#307 Jaké třídy umožňují spouštět programy v OS, tj. mimo tuto JVM ?
ProcessBuilder a Process.
Z#320 Může být pole statický objekt ?
Ne - neexistují žádné statické objekty.
Z#323 Co je getr (getter) ?
Metoda, která vydá žádanou hodnotu proměnné objektu.
Nazývá se též accessor.
Z#324 Co je setr (setter -zvaný též mutator) ? Napište příklad.
Veřejná metoda nastavující atribut na zadanou přípustnou hodnotu.
-24-
C:\Users\cypher\Desktop\JAQ_2.0.txt
Z#325
Z#326
Z#327
Z#328
Z#329
Z#330
Z#331
Z#334
Z#336
Z#342
Z#343
Z#346
Z#347
Z#348
Z#349
Z#350
Z#351
Z#352
Z#353
24. května 2012 13:47
Dodržuje jmennou konvenci - např.:
int hodnota;
public void setHodnota(int hodnota) { this.hodnota=hodnota; }
Co obsahují prvky pole new java.lang.Runnable[7];
?
Všechny obsahují null.
Co obsahují prvky pole new java.lang.Thread[7];
?
Všechny obsahují null.
Co obsahují prvky pole new boolean[5];
?
Všechny obsahují false.
Co obsahují prvky pole new boolean[0];
?
Žádné nemá.
Co obsahují prvky pole new java.lang.Boolean[6];
?
Všechny obsahují null.
Jakého typu je x vypíše-li System.out.print(x) [[D@3e25a5 ?
double[][] x
anebo
String x="[[D@3e25a5";
Kterou metodou lze změnit již vytvořeného délku pole ?
Žádnou, neboť délka pole je final int.
Co vše může způsobit výraz ( (new int[j])[j] ) je-li j typu short ?
Není-li hodnota j definována: chybu kompilace.
pro j< 0: java.lang.NegativeArraySizeException,
pro j>=0: java.lang.ArrayIndexOutOfBoundsException.
Jak otestovat, zda Object x referuje pole dvourozměrné typu float ?
x instanceof float[]
nebo
x.getClass().getName().startsWith("[[F@")
Jakého typu může být x v příkazu x=new int[3][5].getClass; //?
Object či Class či interfejsy třídy Class:
( Serializable, AnnotatedElement, GenericDeclaration, Type )
Co znamená deprecated metoda ?
Metoda je funkční, leč nějak nevhodná, zastaralá apod. a může být
v další verzi API zrušena. Často bývá doporučována metoda lepší.
Co znamená výraz
p == r
, kde p , r jsou reference.
Pro nekompatibilní typy dojde k syntaktické chybě,
pro true: reference odkazují na tentýž objekt nebo jsou null,
pro false: reference odkazují na dva různe objekty,
(mohou však být ekvivalentní či nikoli dle definice metody equals).
anebo jedna reference je null a druhá nikoli.
Co znamená ekvivalence objektů a jak se realizuje ?
Ekvivalenci objektů definuje tvůce třídy překrytím metody
boolean equals(T o) porovnávající hodnoty vybraných atributů.
Co počítá a vrací metoda hashCode a jaký má smysl ?
Vrací int hešové číslo spatlané z hodnot zvolených atributů
objektu. Spatlání by mělo zajistit rovnoměrné rozdělení hešových čísel.
Jak souvisejí metody equals(Object o) a hashCode() ?
Kontraktem, jenž požaduje shodnou hodnotu hashCode() pro objekty
ekvivalentní dle implementované metody equals().
Avšak pro neekvivaletní objekty nepožaduje různé hodnoty.
Kde se v syntaxi užívá znak @ tzv. zavináč ?
V deklaraci a při užití anotace - např. @ Override
Co je anotace a k čemu slouží ?
Speciální interfejs. Poskytuje dodatečné informace kompilátoru,
runtimu i návaznému software.
Kde lze napsat @Override a co to znamená ?
Jen před metodu. Indikace zda metoda překrývá metodu předka.
Co jsou
enum
a k čemu slouží ? Uveďte příklad.
Speciální třídy k definici typově bezpečných konstant.
public enum DAY { SUN, MON, TUE, WED, THU, FRI, SAT }
Může být definována jen ve statickém kontextu.
-25-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Nemůže být lokální.
Z#354 Co jsou vnořené (nested) a vnitřní (inner) třídy a kde se definují ?
Vnořené jsou statické, vnitřní ne. Definují se v tělech
tříd, interfejsů, anotací a výčtů.
Z#355 Jaký je rozdíl mezi vnořenou (nested) a vnitřní(inner) třídou ?
Vnořená je statická. Vnitřní je nestatická a je existenčně svázána
s objekty vnější třídy a může přímo přistupovat i k jeho instančním členùm.
Z#356 Co je lokální třída a kde se může vyskytovat ?
Třída bez modifikátorů přístupu definovaná v těle metody či
či konstruktoru či v inicializátoru statickém nebo nestatickém.
Lokální třída není zvnějšku svého obalu přístupná.
Z#357 Co se skrývá za DDD, je-li
new DDD().DDD() platným výrazem ?
První jméno bezparametrického konstruktoru třídy DDD.
Druhé jméno její bezparametrické metody ( procedury či funkce, statické či
nestatické, vlastní či zděděné ).
Jména metod uzančně začínají malým písmenem, ale kompilátoru je to jedno.
Z#358 Kde všude lze použít klíčové slovo default ?
V příkazu switch a v metodě-funkce v definici anotace.
Z#359 Co znamená konstrukce
@A{}
?
Definici anotace.
Z#360 Co znamená konstrukce
@_
//?
Anotace nějakého následujícího cíle anotací jménem _ .
Jméno _ je sice nevkusné, leč platné.
Z#361 Lze v těle konstruktoru definovat nějakou třídu ?
Ano, tzv. lokální třídu.
Z#362 Lze definovat uvnitř těla konstruktoru interface ?
Ne, neexistují tzv. lokální interfejsy.
Z#363 Kde všude se užívá klíčové slovo
extends
?
Při definici potomka třídy nebo interfejsu
anebo pro vymezení typového parametru např.: < ? extends List >
Z#364 Které znaky může obsahovat prosté jméno tj. identifikátor ?
Java letter ( Unicode písmena a dolar a podtržítko )
nebo Java digit ( Unicode číslice ) ne však na začátku.
Rozhoduje viz: java.lang.Character.isJava ...
Z#365 Jaké znaky obsahuje kvalifikované jméno oproti prostému jménu ?
Právě jednu tečku oddělující prostá jména.
Z#366 Která klíčová slova obsahuji alespoň jedno velké písmeno ?
Žádná.
Z#367 K čemu se typicky uzančně užívají písmena E T K V a co znamenají ?
Užívají se jako formální typové parametry ve smyslu
Element, Type, Key a Value.
Z#368 Kde všude se užívá symbol otazníku ?
V ternárním výrazu a ve vymezení typového parametru
např.: < ? > nebo < ? extends List >
Z#379 Jak se provádí rušení interfejsu ?
Výmazem z balíčku na disku.
Z#380 Co se stane
class T implements AN { } // je-li AN anotace ?
Kompilátor navrhne modifikátor abstract anebo
konkretizaci metod - přinejmenším metodu annotationType(),
neboť každá anotace je interfejs.
Z#382 Lze v běhu měnit hodnotu prvku pole získaného z interfejsu - proč ano/ne ?
Ano, reference na pole je finální, ale final se nevztahuje jeho na prvky.
Z#383 Jak zajistit neměnnost hodnot prvků nějakého pole ?
Přístup k privátnímu poli umožnit jen prostřednictvím getru,
přičemž obé musí být definované ve třídě nikoli v interfejsu.
Např.: int getPrvek( int index ) { return pole[index]; }
Z#412 Co je singleton a jak vznikne ?
-26-
C:\Users\cypher\Desktop\JAQ_2.0.txt
Z#413
Z#414
Z#415
Z#416
Z#417
Z#427
Z#433
Z#434
Z#439
Z#440
Z#441
Z#442
Z#443
Z#444
Z#481
Z#482
Z#485
Z#486
Z#487
24. května 2012 13:47
Objekt, který je jediný dané třídy v běhu aplikace/apletu.
Třída T má jen private konstruktory,
private final static T t = new T(); public static T getT(){return t;}
Co jsou formální parametry a kde se vyskytují ?
Lokální proměnné definované v hlavičce metody/konstruktoru
platné jen v těle metody/konstruktoru, jímž se při volání
přiřazují hodnoty odpovídajících argumentů.
Co jsou argumenty a kde se vyskytují ?
Hodnoty přiřazované formálním parametrům při volání metod
či konstruktorů.
Jak lze aktivovat statický konstruktor ?
Přetěžko, neboť neexistuje.
Jakými způsoby lze přistoupit ke statické proměnné ?
Zevně: Trida.promena, Interfejs.promenna
Zevnitř z metody/konstruktoru: promenna
Jakými způsoby lze volat statickou metodu ?
Zevně: Trida.metoda(...), Interfejs.metoda(...)
Zevnitř z metody/konstruktoru: promenna
Co je Observer, Observable a ImageObserver ?
Interfejsy z java.util.
java.awt.image
Jaká je hodnota výrazu
false < true
?
Výsledkem je syntaktická chyba.
Logické literály nejsou uspořádané.
Co vytiskne příkaz System.out.println( !n );
Má-li n nastavenou boolevskou hodnotu, pak její opak.
Jinak syntaktická chyba.
Je Java čistý objektový jazyk ? Proč ano, proč ne ?
Není. Je však silně objektový ale kompromisní, neboť má primitivní
typy kompatibilní k hardware posledních dekád 20. století.
K praktickému překonání této dichotomie užívá obalové třídy
a autoboxing.
Vyjmenujte obalové třídy (wrapped classes). K čemu slouží ?
Boolean, Byte, Short, Character, Integer, Long, Float, Double, Void.
Všechny jsou definované v java.lang.
K tvorbě objektů pro uschování hodnoty odpovídajícího primitivu.
A skladu metod (i statických) pro manipulace a konverze.
Které třídy mají ve svém jménu koncovku "able"
(ač by neměly)?
Throwable, Observable , neboť to nejsou interfejsy.
Které interfejsy nemají někde ve svém jménu "able" (ač by měly)?
CharSequence, Collection, Map, Set, Observer, ***Listener
Co je class literal ?
Výraz složený ze jména typu (včetně primitivů, polí a void)
a .class .
Např. Runnable[].class, int[][].class
Co je popisný objekt třídy ( class-object ) a jak se vytvoří ?
Objekt typu Class. Zavedením class-file do paměti a následným
linking, verification, preparation, resolution.
Lze konstruktor označit modifikátorem native ?
Lze, ale kompilátor to odmítne zkompilovat.
Lze nenativní metodu překrýt nativní ?
Ano, a i naopak.
Jak se lze zbavit nechtěných metod v iterfejsu, které zdědil ?
Nelze a ani je nelze sabotovat - nemají tělo.
Jak se zbavit nechtěných atributů, které třída zdědila ?
Lze je jen zastínit a privatizovat, čím nebudou vně
třídy přístupné.
Jak se zbavit nechtěné metody, které třída zdědila ?
Zbavit se jí nelze - jen lze sabotovat její funkcionalitu
-27-
C:\Users\cypher\Desktop\JAQ_2.0.txt
Z#488
Z#489
Z#490
Z#491
Z#492
Z#493
Z#494
Z#495
Z#496
Z#497
Z#498
Z#500
Z#502
Z#507
Z#508
Z#518
Z#519
24. května 2012 13:47
nejlépe takto: throw new UnsupportedOperationException("For ever.");
a uvedením této vyjímky v hlavičce a tím i v dokumentaci.
Jaké je uzančně vhodné jméno: třídy, interfejsu, metody, proměnné ?
lat.: Substantivum, Adjektivum, verbum, substantivum.
čes.: PodstatnéJméno, PřídavnéJméno, sloveso, podstatnéJméno.
Jaká vyjímka se vyhodí při přetečení po násobení v typu float ?
Žádná, neboť při operacích s type float resp. double
žádné Throwable nevznikají.
Jaké výjimky se vyhodí při přetečení integrální aritmetiky ?
ArithmeticException a to jen při dělení nulou.
Při přetečení slučováním nebo násobení výjimka nevzniká.
Jaká výjimka je vyhozena je-li operandem NaN nebo nekonečno ?
Žádná, výpočet pokračuje dále avšak jen s hodnotami
NaN nebo infinity.
Které operace kterých typů způsobí výsledek NaN ?
Jen pro typ float či double:
- neurčitý výraz 0/0, 0*Infinity,
- konverze nečíselného řetězu na číslo.
Co definuje norma IEEE 754 ?
Formáty a aritmetiku float a double.
Jmenujte některé veřejné statické metody z API.
System: currentTimeMillis, exit, gc
Integer/Double: parse
Math: všechny
Thread: yield, currentThread, sleep, interrupted
Arrays/Collections: sort
Jmenujte některé veřejné nativní metody.
getClass, wait, notify,
yield, currentThread, sleep, isAlive,
currentTimeMillis
Jmenujte některé veřejné finální metody.
getClass, wait, notify,
isAlive, join
Které metody mají všechny třídy ?
Generální metody zděděné od java.lang.Object .
equals, getClass, hashCode, toString, nofify, notifyAll, wait
Co udělá sekvence a^=b; b^=a; a^=b; a pro které typy ?
Vymění hodnoty mezi proměnými bez použití pomocné proměné
pro byte,short,int,long, char anebo boolean.
K čemu jsou funkce floor a ceil ?
Patří do třídy Math, argument i hodnotu mají typu double,
floor [čili podlaha] vrací nejblizší nizší celé číslo typu double,
ceil [čili strop (ceiling)] vrací nejblizší vyšší celé číslo typu double.
Může metoda překrývající hashCode( ) vyhodit kontrolovanou vyjímku ?
Ne, neb překrytá hashCode( ) nemá stigma, tj. throws list.
Jaký druh tříd použijete k vytváření abstraktních objektů ?
Žádný, nelze vytvářet abstraktní objekty.
Kde byla Java stvořena, kdy uveřejněna a kdo byl jejím předním autorem ?
Fa. SUN Microsystems, (SUN = Stanford University Network),
1995, James Gosling.
Proč má abstraktní třída konstruktory, když neumí vytvářet objekty ?
Jen konkrétní potomci abstraktní třídy mohou vytvářet objekty.
Objekty však obsahují všechny nestatické atributy i všech
předků a tedy je třeba provést všechny konstruktory po dědičné linii,
nejdříve zdola nahoru volání super( ... ) až k java.lang.Object
a pak shora dolů pro inicializaci atributů.
Jaké je logo Javy ?
-28-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Šálek horké, kouřící kávy - oblíbená droga pilných programátorů.
Z#521 Co je zapouzdření, k čemu slouží a jak se realizuje ?
Čili encapsulation, skrytí hodnot a implementací, což podporuje bezpečnost.
Použitím modifikátorů přístupu (private), interferfejsů a getrů/setrů.
Z#522 Jaký je rozdíl mezi finally{} a finalize( ) ?
1. je blok, případná část klauzule try-catch-finally.
2. je protected metoda v java.lang.Objectu, volaná před zrušením objektu.
Z#523 Co lze rozhodnout porovnáním hodnot hashCode() dvou objektů téže třídy ?
Lze rozhodnout, že jsou různé, ale nelze rozhodnout, že jsou stejné.
Stejnost určuje metoda equals(Object o).
Z#524 Co lze rozhodnout porovnáním hodnot hashCode() dvou objektů různých tříd ?
Záleží definici equals a hashCode() a jejich kontraktu.
Otázka má spíše smysl jen pro "blízké" třídy s týmiž rozhodnými atributy.
Z#525 Z čeho počítá java.lang.Object.hashCode() když Object nemá atributy ?
Z adresy alokace objektu. Neunikátní, patrně vždy > 0.
Z#526 Kam míří self mělkého klonu objektu class X impl. Cloneable {A self=this; ...} ?
Ke vzoru při mělkém klonování.
Z#531 K čemu slouží a kde je definována nestatická metoda newInstance()
?
Definována je v třídě Class. Vytvoří a vrátí objekt dle dané třídy.
Z#532 K čemu slouží a kde je definována statická metoda forName(String className) ?
Vrátí objekt typu Class, přičemž ho natáhne příslušný class-file do paměti.
Tedy popisný objekt třídy či interfejsu. Definována je v třídě Class.
Z#533 Co je finální blanková proměnná ? Může být statická či nestatická ?
Taková finální proměnná (tj. s modifikátorem final, leč není inicializovaná
ve své definici. Může být jak statická tak nestatická.
Avšak při kterékoli konstrukci objektu už musí být inicializovaná.
Z#534 Kde se inicializuje statická resp. nestatická finální blank proměnná ?
Statická: jen v jednom statickém inicializátoru.
Nestatická: jen v jednom nestatickém inicializátoru anebo v konstruktorech
tak, aby užitím kteréhokoli se proměnná inicializovala.
Z#536 Jaký je rozdíl mezi "is" a "has" ve vztahu dvou referečných typů ?
"is":
jeden typ je podtypem druhého typu či týmž typem.
"has": jeden typ má atribut referující objekt druhého typu.
Z#537 Uveďte příklad vztahu "is" !
Např. Frame je Container, Frame je Serializable, Externalizable je
Serializable a tudiž lze přiřadit Container x = (Frame)null; apod.
Tj.: vede-li dráha od referenčního typu A k typu B, pak A "is" B.
Z#538 Uveďte příklad vztahu "has" !
class Point(){ int x,y; } či interface Plane{ Point orig = new Point(); }
Typ má definován atribut: bod má souřadnice, rovina má počátek souřadnic.
Z#545 Napište příklad použití standardní metody substring !
Vrací podřetěz dle indexů beginIndex počítaný od nuly a endIndex na znak,
který už netřeba. Přetížená funkce substring(beginIndex) vrací až do konce.
Z#546 Co vytiskne System.out.print( "ABC"+"DEF".substring(1) );
a proč ?
ABCEF neboť kvalifikátor (tečka) má vyšší priroitu než + konkatenace.
Z#547 Kde jsou definovány metody indexOf a co dělají ?
Vracejí index <0,length()-1> resp. <0,size()-1> nalezeného Objektu jinak -1.
java.lang:
String, StringBuffer, StringBuilder ( String )
java.util:
ArrayList, Vector, LinkedList
( <E> )
javax.swing: DefaultListModel
( <E> )
Z#555 Může mít [ne]statický inicializátor či konstruktor modifikátor synchronized ?
Ne. Netřeba: konstrukce objektu je synchronizována již v JVM.
V tělech mohou mít synchronizované bloky.
Z#556 Co se vypíše Object o=3.14; System.out.print(o.getClass().getName());
//?
java.lang.Double, neboť autoboxing zabalí double 3.14 do objektu typu Double.
Z#557 Jakou hodnotu bude mít d ?
Object o=3.14;
double d=o ;
Žádnou, je to syntaktická chyba, chybí přetypování double d=(Double)o;
-29-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
Pak by unboxing zkopíroval hodnotu 3.14 do d;
Z#558 Co udělá for ( boolean b = false; false != true; b=true ) { m(b); } //?
Nekonečné volání metody m(). Poprvé s false, pak navždy s true.
K ukončení dojde jen vyhozením Throwable, exitem nebo zásahem zvnějšku.
Z#559 Co udělá příkaz for( ; ; ){ m(); }
a co příkaz for ( : ) { m(); }
První nekonečný cyklus volání metody m() , druhý syntaktickou chybu.
Z#560 Je-li final String x="ab", y="a", z;
z=y+"b"; jakou hodnotu má (x==z) //?
true, neboť y je finální a již kompilátor vyhodnotí z na napasuje na x.
x ani z nemusí být final. Pro nefinální y vyjde false, neb vzniknou 3 objekty.
Z#563 Lze překrýt vnitřní třídu ?
Jak ano anebo proč ne ?
Ne: "překrývaná" i "překrývající" jsou v jiných třídách a tedy
jsou v jiných jmenných prostorech.
Z#571 Jak zjistíte zda Object o referuje matici primitivního typu ?
String s=o.getClass().getName(); a výrazu
s.startsWith("[[") && !s.startsWith("[[[") && !s.startsWith("[[L")
Z#572 Jaké musí být typy proměnných, aby nastal tisk: System.out.print(x == y == z); //?
Proměnné x a y musejí být komparabilní (včetně autoboxingu)
a z musí být boolean anebo Boolean.
Pak se vytiskne false anebo true.
Projevuje se tu asociativita zleva.
Z#573 Co udělá výraz
new int[j] je-li j typu char ?
Není-li hodnota j definována: chybu kompilace, jinak vytvoří pole typu int[]
o délce dle hodnoty j (tj. 0 až 65535) vyplněné nulami.
Z#579 Co je třeba předznamenat, aby to vyšlo
double y = exp(sin(PI/4)); //?
import static java.lang.Math.*;
Z#580 Co je vararg, kde a jak se definuje a k čemu se používá ?
Komfortní definice zápisu a volání posledního formálního parametru, který
je vyjádřen polem.
Např.:
void m( char c, Object ... o ) { /* code */ }
se volá např.:
m( 'A', 1, "dva", 3 );
Pak pole o má tři prvky.
Z#582 Co vypíše System.out.print("abc" == new String("abc"));
?
false, porovnává se objekt v string poolu s objektem vytvořeným v runtime.
Z#584 Spustí se aplikace metodou public static void main(String ... x){} // proč ano/ne ?
Ano, je to ekvivalentní String[] přičemž na jménu parametru nezáleží.
Z#592 Kde lze užít klíčová slova this a super ?
Jen v nestatickém kontextu tj. v konstruktorech, metodách,
inicializátorech a inicializacich instančních atributů.
Z#593 Co je blank final proměnná ?
Neinicializovaná [ne]statická proměnná, která je inicializovaná právě jednou
v jednom [ne]statickém inicializátoru anebo při každé možné konstrukci objektu
při průchodu konstruktory třídy.
Z#600 Co způsobí
static { System.exit( Integer.MIN_VALUE ); }
// ?
Když JVM inicializuje všechny statické atributy, provede předchozí statické
inicializátory. V tomto však JVM spáchá sebevraždu a v posledním tažení
krvavě výkřikne do proudu System.err:
Java Result: -2147483648
******************************************************************************************
*
1
2
3
4
5
6
7
8
*12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
* Připomínky, doplňky, návrhy, náměty apod. posílejte na [email protected]
******************************************************************************************
*#601 Co se stane: String q=null; System.out.println( q == true+qqq+false );
//?
*
Hodnota řetězu q bude truenullfalse a ta se vytiskne.
*#602 Jaká je hodnota proměnné boolean b = ~ true;
// ? Kde ~ je vlnovka tzv. tilda
*
Žádná, je to chyba. Tilda mění hodnoty bitů jen integrálních hodnot (tedy i char).
*#603 Co obsahuje pole int[] p = { 65, 'A', 0x41 };
// ?
*
Tři čísla šedesátpět.
*#604 Jak překrýt finální metodu metodou nefinální ?
*
To přece nejde.
*#605 Jak překrýt konstruktor ?
-30-
C:\Users\cypher\Desktop\JAQ_2.0.txt
24. května 2012 13:47
*
To vůbec nejde, ježto se nedědí, takže není co překrývat.
********************************** Pro budoucí rozšíření *******************************
**** DALŠÍ NÁMĚTY:
*
IO Concurr GUI factory RMI Locale lokalita, NIO ?
*
Type params
*
String s="abcd"; char[] x=s.toCharArray(); x[2]='*';
-31-

Podobné dokumenty

KláVESOVé ZKRATKy

KláVESOVé ZKRATKy Stisknutím klávesy „Escape“ se vám kdykoli zobrazí zpráva o stavu počasí, výuka, cíle závodu a informace o něm, možnost ukončit nebo restartovat závod či uložit záznam. Na konci závodu můžete ulož...

Více

Java FAQ velmi rozsáhlý soubor otázek a odpovědí

Java FAQ velmi rozsáhlý soubor otázek a odpovědí Object o = ev.getSource(); E#446 Popište princip delegačního modelu události. Zdroj rozesílá objekt patřičného podtypu EventObject jako argument smluvené metody všem objektům-handlerům, které jsou ...

Více

výroční zpráva annual report 2003

výroční zpráva annual report 2003 • All members get the same opportunity to assert their ideas • We mutually value the work of others and ourselves

Více

Logické a číslicové systémy - IMProVET

Logické a číslicové systémy - IMProVET Jiným příkladem může být soubor pasových dopravníků, které na sebe navazují. Zapnutím tohoto souboru dochází k postupnému spouštění všech dopravníků. Jako první se uvede do provozu dopravník, který...

Více

Otevírání černých skříněk

Otevírání černých skříněk text page. Vedle těchto tří základních šablon jsou v aplikaci použity jejich modifikované verze pro obsloužení specifických případů – stránka pro přihlášení k aplikaci, stránka pro nastavení vyhled...

Více