2017校招筆試面試總結(掛滿辛酸淚)
具體是哪家公司的就不說了,反正我不記得,也沒我份。。。。另外,問題是別人的,答案是自己的,不保證是否正確。
1、執行緒的實現方式有幾種?分別是什麼?
三種,一種是繼承Thread類,一種是實現Runnable介面,第三種是使用ExecutorService、Callable、Future實現有返回結果的多執行緒(具體分析請移步此處http://blog.csdn.net/aboy123/article/details/38307539,同時感謝評論中BarackHusseinObama的提醒)。
2、java的特點是什麼?有哪些特性?
我的回答是:面向物件,主要包含以下三個特性:封裝、多型、繼承
此外,還有五大基本原則:
(1)單一職責原則(Single-Responsibility Principle,SRP):指一個類的功能要單一,不能包羅永珍,如同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌,但效率不高。
(2)開放封閉原則(Open-Closed Principle,OCP):一個模組在擴充套件性方面應該是開放的,而在更改性方面應該是封閉的。比如,一個網路模組,原來只服務端功能,而現在要加入客戶端功能。那麼應該不用修改服務端程式碼的前提下,就能夠增加客戶端功能的實現程式碼。這要求在設計之初就應當將服務端和客戶端分開,公共部分抽象出來。
(3)里氏替換原則(Liskov-Substituent Principe,
(4)依賴原則(Dependency-Inversion Principle,DIP):具體依賴抽象,上層依賴下層。假設B是較A低的模組,但B需要用到A的功能,這個時候,B不應該直接使用A中的具體類,而應當由B定義一抽象口,並由A來實現這個抽象介面,B只使用這個抽象介面,這樣就達到了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象介面,通過上層模組難以避免賴下層模組,加入B也直接依賴A實現,那麼就可能造成迴圈依賴,一個常見的問題就是編譯A模組時需要直接包含到B模組的CPP檔案,而編譯B時同樣需要直接包含到A模組的CPP檔案。
(5)介面分離原則(the interface Segregation Principe,ISP):模組間要通過抽象介面隔離開,而不是通過具體的類強耦合起來。
該題部分答案來自http://www.cnblogs.com/hnrainll/archive/2012/09/18/2690846.html
3、抽象類可以繼承抽象類嗎?
可以,抽象類也是類,所以具有類的特性,詳情如下:
abstract class A{
abstract void add();
public void delete(){}
}
abstract class B extends A{
//繼承了抽象A類,因為也是抽象的,可以不寫抽象方法,當然也可以重寫抽象方法(切記抽象方法是沒有方法體的)
//abstract void add(); //也是沒有問題的
abstract void getXX();
}
public class extends B{
//必須實現抽象方法
//繼承了B,也就繼承了A,A B方法都有,所以必須重寫這兩個抽象類的抽象方法
public void add(){}
public void delete(){}
public void getXX(){}
}
4、介面可以實現介面嗎?
不可以,因為介面的成員方法都具有抽象屬性,不具有方法體,無法實現繼承的介面,但是可以繼承介面,並且可以繼承多個介面(針對java7而言,java8已允許通過default關鍵字在介面中實現方法體,下同),如下:
public interface Interface2 extends Interface1,Interface3{
}
5、介面可以繼承抽象類嗎?
不可以,接口裡的方法是不能有方法體的,但抽象類允許方法體,所以會有衝突。但是抽象類可以實現介面。
6、介面和抽象類的區別?
(1)抽象類可以有方法實現,介面完全抽象,不存在方法實現;
(2)抽象類可以有構造器,介面不能有;
(3)抽象類除了不能例項化,其他和普通的java類沒有什麼區別,介面是完全不同的型別;
(4)抽象類可以有public、protected和default這些修飾符,介面預設public,不允許其他的修飾符;
(5)抽象類可以繼承一個類,實現多個方法,介面可以繼承一個或多個其他介面;
(6)抽象類速度比介面快,因為介面需要時間去尋找在類中實現的方法。
(7)抽象類可以新增新的方法,可以給該方法提供預設實現,因此可以不需要改變子類。介面一旦新增方法,實現該介面的類也必須改變。
來源:http://www.importnew.com/12399.html7、靜態程式碼塊、構造程式碼塊、構造方法、main方法執行順序
public class StaticCode {
//執行順序:(優先順序從高到低。)靜態程式碼塊>main方法>構造程式碼塊>構造方法。
int i = 1;
static int j = 2;
//這是靜態程式碼塊:專案啟動時初始化,而靜態方法則是被呼叫時初始化
static{
j=3;
//i=1;編譯報錯
System.out.println("靜態程式碼塊1");
}
static{
System.out.println("靜態程式碼塊2");
}
//這是構造程式碼塊:例項化物件時執行
{
j=2;
i=3;
System.out.println("構造程式碼塊1");
}
{
System.out.println("構造程式碼塊2");
}
public StaticCode(){
System.out.println("構造方法");
}
public static void main(String[] args) {
System.out.println("main方法");
new StaticCode();
new StaticCode();
}
}
執行結果:
靜態程式碼塊1
靜態程式碼塊2
main方法
構造程式碼塊1
構造程式碼塊2
構造方法
構造程式碼塊1
構造程式碼塊2
構造方法
8、同步的實現方法
(1)同步方法synchronized
由於java的每個物件都有一個內建鎖,當使用該關鍵字修飾方法時,內建鎖會保護整個方法。在呼叫該方法前,需要獲得內建鎖,否則處於阻塞狀態。
程式碼示例:
public synchronized void synchronizedMethod1(){
}
改關鍵字也可以修飾靜態方法,如果呼叫該靜態方法,將會鎖住整個類。
(2)同步程式碼塊
被synchronized修飾的程式碼塊,例如:
int account;
public void synchronizedMethod2(){
synchronized (this) {
account= 1000;
}
}
同步是一種高開銷的操作,因此應該儘量減少同步的內容。通常沒必要同步整個方法,使用同步程式碼塊即可。
(3)使用重入鎖
JavaSE5.0新增了一個java.util.concurrent包來實現同步
ReentrantLock類是可重入、互斥、實現了Lock介面的鎖,他與使用synchronized方法和塊具有相同的基本行為和語義,並且擴充套件了其能力。
ReentrantLock常用方法:
a、ReentrantLock():建立例項;
b、lock():獲得鎖,c、unlock():釋放鎖。
9、執行緒有哪幾種狀態?
五種:
(1)新建:使用new;
(2)就緒:呼叫start()方法後的狀態;
(3)執行:處於run()方法的狀態;
(4)阻塞/等待/睡眠;
(5)死亡:run()完成時,此時呼叫start()會報錯;
狀態的轉換:
圖片來自:https://my.oschina.net/mingdongcheng/blog/139263
10、mysql中InnoDB和MyIsam(預設)的區別
(1)InnoDB支援外來鍵和事務,MyIsam不支援;
(2)InnoDB支援資料行鎖定,MyISAM只支援鎖定整張表;
(3)InnoDB不支援全文索引FULLTEXT,MyISAM支援;
(4)InnoDB主鍵範圍更大;
(5)MyISAM支援gis資料,InnDB不支援。
(6)MyISAM會儲存表的行數,所以select (*) from table;的速度更快,但如果帶有where子句,而倆者的操作是一樣的。
11、mysql回滾的實現原理
似乎是使用儲存點savepoint實現的,後期補充
12、spring事務配置方式
<!-- 事務管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事務處理通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" rollback-for="Exception" />
<tx:method name="get*" read-only="false" />
<tx:method name="add*" rollback-for="Exception" />
<tx:method name="addOrUpdate*" rollback-for="Exception" />
<tx:method name="del*" rollback-for="Exception" />
<tx:method name="remove*" rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="query*" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="serviceMethod"
expression="execution(* com.gpl.**.*.biz.*Biz.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
</aop:config>
13、String的快取機制
參見此處(http://blog.csdn.net/tiantiandjava/article/details/46309163)
14、spring的核心是什麼?
IOC和AOP
IOC:傳統上使用一個物件需要使用new關鍵字例項化,而使用IOC則允許在配置檔案中配置而後注入到對應的類中;
AOP: 面向切面變成,可以在方法前、方法後、例項化前、例項化後做一下操作,如傳統的日誌記錄需要在每個類中做處理,而使用AOP則只需要寫一個類,之後配置一下即可
15、mysql隔離機制?
圖片來源:http://xm-king.iteye.com/blog/770721
髒讀:一個事務未提交,而另一個事務可以讀到這部分未提交的資料,而這部分資料由於未提交,可能會回滾;
不可重複讀:事務A先查詢一遍,之後事務B提交,事務A在查詢,發現數據被更改;
幻讀:幻讀,是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表中的資料進行了修改,這種修改涉及到表中的全部資料行。同時,第二個事務也修改這個
表中的資料,這種修改是向表中插入一行新資料。那麼,以後就會發生操作第一個事務的使用者發現表中還有沒有修改的資料行,就好象發生了幻覺一樣.
16、事務的特性
(1)原子性:要麼都完成,要麼都不完成;
(2)一致性:事務完成前後資料的完整性保持不變(如外來鍵不會被破壞);
(3)隔離性:當多個事務同時操作資料庫時,可能存在並發現象,此時應保持事務之間隔離,彼此不受影響;
(4)永續性:事務一旦提交,那麼改變的資料就是永久的,不能再回滾。
17、拼接字串有哪些方式?
http://blog.csdn.net/kimsoft/article/details/3353849
18、如何在http頭中指定快取?
http中快取主要是以下內容:
(1)Expires和Cache-Control
Expires: Sun, 16 Oct 2016 05:43:02 GMT(絕對時間)
Cache-Control:
max-age:600(相對時間,解決上述設定由於客戶端時間設定引起的問題)
(2)Last-Modifed和If-Modify-since
客戶端第一次訪問資源的時候,服務端返回資源內容的同時返回了Last-Modifed:Wed, 07 Aug 2013 15:32:18 GMT
服務端在告訴客戶端:你獲取的這個檔案我最後的修改時間是Wed,
07 Aug 2013 15:32:18 GMT 。瀏覽器在獲取這個檔案存到快取中的時候,給快取中的檔案同時記錄上這個最後修改時間。
第二次訪問的時候(我們假設這裡沒有設定expires或者cache-control)。那麼客戶端訪問資源的時候會帶上If-Modify-since:Wed, 07 Aug 2013 15:32:18 GMT ;
客戶端詢問服務端:喂,我需要的這個資源其實我這邊已經有快取了,我的快取檔案的最後修改時間是這個,如果你那邊的資源在這個時間以後沒有修改的話,你就告訴我一下就好了,不需要返回實際的資源內容。反之,要是你有修改的話,你就把檔案內容返回給我吧。
服務端迴應說:哦。行為是看下資源是否在這個時間後沒有修改過,如果沒有修改返回個304告訴客戶端,我沒有修改過。如果有變化了,我就返回200,並且帶上資源內容。
(3)ETag和If-None-Match
第一次客戶端訪問資源的時候,服務端返回資源內容的同時返回了ETag:1234,告訴客戶端:這個檔案的標籤是1234,我如果修改了我這邊的資源的話,這個標籤就會不一樣了。
第二次客戶端訪問資源的時候,由於快取中已經有了Etag為1234的資源,客戶端要去服務端查詢的是這個資源有木有過期呢?所以帶上了If-None-Match: 1234。告訴服務端:如果你那邊的資源還是1234標籤的資源,你就返回304告訴我,不需要返回資源內容了。如果不是的話,你再返回資源內容給我就行了。服務端就比較下Etag來看是返回304還是200。
(4)各種重新整理
理解了上面的快取標籤之後就很好理解各種重新整理了。
重新整理有三種
a、瀏覽器中寫地址,回車
b、F5
c、Ctrl+F5
假設對一個資源:
瀏覽器第一次訪問,獲取資源內容和cache-control: max-age:600,Last_Modify: Wed, 10 Aug 2013 15:32:18 GMT
於是瀏覽器把資原始檔放到快取中,並且決定下次使用的時候直接去快取中取了。
瀏覽器url回車
瀏覽器發現快取中有這個檔案了,好了,就不傳送任何請求了,直接去快取中獲取展現。(最快)
下面我按下了F5重新整理
F5就是告訴瀏覽器,別偷懶,好歹去伺服器看看這個檔案是否有過期了。於是瀏覽器就膽膽襟襟的傳送一個請求帶上If-Modify-since:Wed,
10 Aug 2013 15:32:18 GMT
然後伺服器發現:誒,這個檔案我在這個時間後還沒修改過,不需要給你任何資訊了,返回304就行了。於是瀏覽器獲取到304後就去快取中歡歡喜喜獲取資源了。
但是呢,下面我們按下了Ctrl+F5
這個可是要命了,告訴瀏覽器,你先把你快取中的這個檔案給我刪了,然後再去伺服器請求個完整的資原始檔下來。於是客戶端就完成了強行更新的操作...
注意:那個ETag實際上很少人使用,因為它的計算是使用演算法來得出的,而演算法會佔用服務端計算的資源,所有服務端的資源都是寶貴的,所以就很少使用etag了。
本題來源:http://www.cnblogs.com/yjf512/p/3244882.html
設定快取的方式如下:
- response.setHeader("Pragma","No - cache");
- response.setHeader("Cache - Control","no - cache");
- response.setDateHeader("Expires",0)
19、java是按值傳遞還是按地址傳遞?
原生型別按值傳遞,自定義型別按地址傳遞
此外:
a、“在Java裡面引數傳遞都是按值傳遞”這句話的意思是:按值傳遞是傳遞的值的拷貝,按引用傳遞其實傳遞的是引用的地址值,所以統稱按值傳遞。
b、在Java裡面只有基本型別(包括其包裝類)和按照下面這種定義方式的String是按值傳遞,其它的都是按引用傳遞。就是直接使用雙引號定義字串方式:String str = “Java私塾”;
示例1(基礎資料封裝類):
public class Main {
public static void main(String[] args) {
Integer integer = 10;
test(integer);
System.out.println(integer);
}
private static void test(Integer integer) {
// TODO Auto-generated method stub
integer = 20;
}
}
輸出10
示例2(自定義類):
public class Main {
public static void main(String[] args) {
A a = new A();
a.a = 10;
test(a);
System.out.println(a.a);
}
private static void test(A a) {
// TODO Auto-generated method stub
a.a = 20;
}
}
class A{
int a;
}
輸出20
解決示例2因為按地址傳遞導致結果被改變的方法:在test方法中重新new物件:
public class Main {
public static void main(String[] args) {
A a = new A();
a.a = 10;
test(a);
System.out.println(a.a);
}
private static void test(A a) {
// TODO Auto-generated method stub
a = new A();
a.a = 20;
}
}
class A{
int a;
}
輸出10
20、js定義一個物件
http://group.cnblogs.com/topic/37998.html
21、以下倆行程式碼有何區別:
public class Main {
private static final int a = 10;
private static final int b = 11;
private static int c = 10;
private static int d = 11;
public static void main(String[] args) {
int e = a + b; //1
int f = c + d; //2
}
}
第一行在編譯器執行,第二行在執行期執行,原因:java編譯器使用了常量摺疊技術來優化22、九種基本型別大小及封裝類
雖然定義了boolean這種資料型別,但是隻對它提供了非常有限的支援。在Java虛擬機器中沒有任何供boolean值專用的位元組碼指令,Java語言表示式所操作的boolean值,在編譯之後都使用Java虛擬機器中的int資料型別來代替,而boolean陣列將會被編碼成Java虛擬機器的byte陣列,每個元素boolean元素佔8位”。這樣我們可以得出boolean型別佔了單獨使用是4個位元組,在陣列中又是1個位元組。
文字來自:http://blog.csdn.net/syc434432458/article/details/49964089
23、switch能否用string做引數:
Cannot switch on a value of type boolean. Only convertible int values, strings or enum variables are permitted
從上面的話中可以看出,switch只支援byte、char、int、string(1.6及之前不支援string)、short、enum,而不支援long、double、float、boolean
24、equals和等號的區別?
前者比較內容,後者比較地址
25、object有哪些公用方法?
equals、hashcode、wait、notify、notifyAll、clone、getClass
26、 Java的四種引用,強弱軟虛,用到的場景。
強引用:不會被gc回收,平常使用的便是強引用,如Object object = new Object();就是;
軟引用:記憶體空間足夠,垃圾回收器就不會回收它,如果記憶體空間不足了,就會回收這些物件的記憶體
弱引用:一旦發現了只具有弱引用的物件,不管當前記憶體空間足夠與否,都會回收它的記憶體
虛引用(幽靈引用):發現它還有虛引用,就會在回收物件的記憶體之前,把這個虛引用加入到與之關聯的引用佇列
強弱次序:強>軟>弱>虛
注:可通過System.gc();提醒虛擬機器執行垃圾回收,但虛擬機器未必會執行。
來源:http://blog.csdn.net/u011860731/article/details/48714321
27、hashcode方法的作用
hashCode方法的主要作用是為了配合基於雜湊的集合一起正常執行,這樣的雜湊集合包括HashSet、HashMap以及HashTable。(因為equals方法代價比較大)
28、ArrayList、LinkedList、Vector的區別。
ArrayList 是一個可改變大小的陣列.當更多的元素加入到ArrayList中時,其大小將會動態地增長.內部的元素可以直接通過get與set方法進行訪問,因為ArrayList本質上就是一個數組.
LinkedList 是一個雙鏈表,在新增和刪除元素時具有比ArrayList更好的效能.但在get與set方面弱於ArrayList.
當然,這些對比都是指資料量很大或者操作很頻繁的情況下的對比,如果資料和運算量很小,那麼對比將失去意義.
Vector 和ArrayList類似,但屬於強同步類。如果你的程式本身是執行緒安全的(thread-safe,沒有在多個執行緒之間共享同一個集合/物件),那麼使用ArrayList是更好的選擇。
Vector和ArrayList在更多元素新增進來時會請求更大的空間。Vector每次請求其大小的雙倍空間,而ArrayList每次對size增長50%.
而 LinkedList 還實現了 Queue 介面,該介面比List提供了更多的方法,包括 offer(),peek(),poll()等.
注意: 預設情況下ArrayList的初始容量非常小,所以如果可以預估資料量的話,分配一個較大的初始值屬於最佳實踐,這樣可以減少調整大小的開銷。
來源:http://blog.csdn.net/renfufei/article/details/17077425
29、String、StringBuffer與StringBuilder的區別。
效能上來講:StringBuilder>StringBuffer>String
原因:
String內部定義如下:
/** The value is used for character storage. */
private final char value[];
/** The offset is the first index of the storage that is used. */
private final int offset;
/** The count is the number of characters in the String. */
private final int count;
可見,用於存放字元的char陣列是final的,所以每次改變String的值時,實際上是重新建立了一個String物件,然後將原來的物件指向新建立的物件的地址,另外,在某些特別情況下, String 物件的字串拼接其實是被 Java Compiler 編譯成了 StringBuffer 物件的拼接,所以這些時候 String 物件的速度並不會比 StringBuffer 物件慢。但要注意的是,如果拼接的字串來自另外的String物件的話,Java Compiler就不會自動轉換了,速度也就沒那麼快了。
StringBuffer是執行緒安全的,StringBuilder是執行緒不安全的。
使用策略:
(1)基本原則:如果要操作少量的資料,用String ;單執行緒操作大量資料,用StringBuilder ;多執行緒操作大量資料,用StringBuffer。
(2)不要使用String類的"+"來進行頻繁的拼接,因為那樣的效能極差的,應該使用StringBuffer或StringBuilder類,這在Java的優化上。
是一條比較重要的原則
(3)為了獲得更好的效能,在構造 StringBuffer 或 StringBuilder 時應儘可能指定它們的容量。
來源:http://blog.csdn.net/kingzone_2008/article/details/9220691
相關推薦
2017校招筆試面試總結(掛滿辛酸淚)
具體是哪家公司的就不說了,反正我不記得,也沒我份。。。。另外,問題是別人的,答案是自己的,不保證是否正確。1、執行緒的實現方式有幾種?分別是什麼? 三種,一種是繼承Thread類,一種是實現Runnable介面,第三種是使用ExecutorService、Callabl
騰訊2017校招實習生面試總結 騰訊實習生面試經驗 (已拿offer)
從三月份開始,就投入了緊張的校招實習生準備當中。因為自己深知這次機會的重要性以及必要性。一開始,只鎖定了騰訊和阿里的內推。三月初,在支付寶師兄的幫助下,成功獲得內推資格。師兄給了很多建議,支付寶可能更喜歡問架構、設計以及思考相關的問題。實際上,這樣開放性的考綱更難去複習。因為
非985/211面試大廠校招經歷經驗總結(安全工程師/滲透工程師)
以下是我認識的一個剛畢業小朋友的面試經歷,面試的崗位是“安全工程師”。首先我要誇誇他!並非985,211的他,因為個人經歷和對安全行業的與熱愛,受到了阿里雲師傅的青睞,得到了實習的機會,今年畢業就能順利進大廠了!鼓掌୧(๑•̀◡•́๑)૭“ 崇拜他,才不是因為他本人長得高大帥氣”
CSDN日報20170513 ——《騰訊2017校招實習生面試總結》
作者:十枚硬幣 一定不輕易放棄,一直準備,再準備。越早準備越好。接下來,就是計劃著六月中旬去深圳了,希望兩個月的實習能最終換來校招 Offer。
《歡聚時代2017校招筆試題目(PHP工程師類)---錯題解析》
dpx cti tex jsm tgw mdi ref wota php 8某06痘翁4用wm潘脖柿http://www.zcool.com.cn/collection/ZMTgwMDY4MzY=.html y1兇萄Dp速06蕉j侖誥竅http://www.zcool.c
歡聚時代2017校招筆試題目(web前端類)B卷
1.以下程式中i的輸出值為: var i = 10; for(var i = 0; i < 5; i++){ i += 2; } console.log(i); 答案:6 在js中只有全域性作用域和函式作用域,沒有塊級作用域。全域性i會被for
18年春招筆試面試記錄(一)
印象中比較深刻的幾道面試題 程式設計題: 一、廣場上有250人,有個魔鬼,說250人裡面有個被詛咒了,4小時候後會死,除非找到這個人與魔鬼對峙,才能活下來,這個人有個特點:咬一口白麵包後,白麵包在四個小時內會變黑。廣場上有8個足夠大(但不能分割)的白麵包,請程式設計找出這個人的編號。 &
2017滴滴出行實習面試總結(測試崗,拿到offer)
fork:通過寫時拷貝機制建立子程序,子程序通過拷貝父程序的頁表與父程序共享相同的實體記憶體(被標記為只讀),當其中一方試圖修改實體記憶體上的資料時發生中斷,核心拷貝被修改頁並修改子程序的頁表使其指向新拷貝的一頁,之後對該頁上的資料進行修改不再產生中斷。因此可以理解成父程序和子程序擁有獨立的地址空間而相互不干
騰訊2018實習生春招筆試面試經驗(軟體測試)
寫在前面:本人學渣一枚,面試掛~ 03月左右 官網上投遞了簡歷; 03-26 提前批面試:當時正在上課,突然就接到了一個來自深圳總部的電話面試,還是提前批(可能是因為自己簡歷上有實習經歷的緣故吧),可以說是相當的猝不及防了。沒錯,這是
京東2017校招筆試程式設計題iOS開發工程師
題目過幾天更新,先粘程式碼。 異或運算。 #include <iostream> #include <cstdio> usingnamespacestd; int main() { int n; char a[21],b[21]
2017年-應屆畢業生面試總結(一)
1 前文 從2016年暑假開始準備面試,一直到9月底,面試完成,工作定下來,算是安心了。 首先說說結果吧。結果還是自己挺滿意的,被騰訊公司錄用,拋開薪資什麼的不說,能進入大公司是我的小目標!自己還是很開心的。 動筆寫這篇部落格,已經是12月中旬了。之前一
華為2016校招筆試程式設計題(撲克牌大小)
時間限制:10秒 空間限制:131072K 撲克牌遊戲大家應該都比較熟悉了,一副牌由54張組成,含3~A,2各4張,小王1張,大王1張。牌面從小到大用如下字元和字串表示(其中,小寫joker表示小王,大寫JOKER表示大王):) 3 4 5 6 7 8 9
騰訊2017秋招筆試程式設計題(三)---素數對
騰訊2017秋招筆試程式設計題(三)—素數對 時間限制:1秒 空間限制:32768K 給定一個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。 如,輸
機器學習/資料探勘工程師校招筆試題目總結。
題目來自網際網路,答案個人彙總。 1.簡述資料庫操作的步驟 答:使用Java操作資料庫。 (1)宣告Connection物件、PreparedStatement物件,必要的話宣告ResultSet物件以獲取查詢結果。 (2)組合連線字串,由驅動名稱和資料庫地址組成。 (3)
java筆試+面試總結(大綱)
originale blog:here 一、java基礎 1、給一段java程式寫出程式的輸出結果(考點:類的執行順序,賦值順序,繼承) 2、Java執行過程 3、final/static關鍵字 4、Java synchronized實現機制
2019 web 前端面試總結(內附面經)
這篇文章不適合拿到 BAT 的大佬及自制力特別差的人 本文只是提供複習的思路,以及我自己的一些面經,並沒有具體的題目 基本情況 據說先把 offer 亮出來才能吸引你們看下去。目前一共有五個。分別是順豐,拼多多,遠景智慧,老虎證券和貝殼。其實拿到拼多多以後很
關於第一次面試總結(嵌入式軟體開發工程師)
第一次面試總結 首先,筆試: 一、問死鎖是什麼,死鎖的原因有哪些?死鎖的四個必要條件是神馬?如何解開死鎖? 死鎖: 指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。 死鎖的原因有兩個: a. 競爭
面試總結(知乎+京東)
知乎面試問題 一面 演算法題 兩個有序陣列,輸出第k小的數字 思想時:分別折半查詢,每個陣列記錄自己的left,right索引,進行查詢。 hashmap 原始碼結構 hashmap在擴容時空間建立+新舊節點的對應關係+如果擴容過程中查
你不知道的騰訊社招Java面試經驗(已拿到offer)
背景最近一段時間換工作,成功獲得了騰訊的offer。在這裡有點經驗跟大家分享,我覺得,比起具體的面試題,有些東西更加重要,你知道這些東西,再去準備面試,說不定能獲得offer;但是有些東西不注意,可能你有這個能力,但是最終還是沒有offer。我寫這篇文章的目的,是讓有能力有意
2017騰訊暑期實習生從筆試到面試總結(附帶華為、阿里面試經歷)
背景說明 個人情況 本人是武漢大學計算機學院2014級的本科生一枚,在寫這篇總結的時候我是大三。本來我們班是規定了有固定的實習的,但是自己還是想向國內頂尖的網際網路公司衝擊一下,所以抱著試一試的想法參加了幾個公司(騰訊、阿里、華為)的暑期實習生招聘。