这段代码,c 1秒,java 9秒,c# 14秒,而python。。。,java初级面试笔试题
 我總結出了很多互聯網公司的面試題及答案,并整理成了文檔,以及各種學習的進階學習資料,免費分享給大家。
 掃描二維碼或搜索下圖紅色VX號,加VX好友,拉你進【程序員面試學習交流群】免費領取。也歡迎各位一起在群里探討技術。
?
哎,不得不說最近見得鍵盤俠客太多了,做程序員沒兩天總是喜歡上嘴唇觸天,下嘴唇碰地的吹。
?
自己分明都沒用過幾門語言,就對各門語言評頭論足說三道四,這么語言多好那門語言有多爛。
可能是隨著時間也變得沒那么浮躁,這換我剛畢業時候我估計我難免也加入其中與其爭論一番,工作這么些年了內心平靜了不少。
再聽那些毛頭小子們評頭論足的我也就是微微一笑就算了。
但是,突然也起了興趣,各門語言的效率究竟能差多少,以前還真沒做過相關的試驗。真理不是聽說、好像、估計就能出結果的。
沒有依據的話那叫信口雌黃。說出一個結果時候你得有足夠的依據。
就拿我最熟悉的幾門語言坐下對比,分別為C,C#,JAVA,Python。
c,早在學生階段就天天再用,學習數據結構時候不知道寫了多少c代碼。
c#,是我現在每天在用的語言,使用c#嚴謹的語法+強大IDE,寫代碼比為愛鼓掌還爽。
java,目前寫過許多android程序,網站也做過一些。
Python,目前為止并未在工作中實際使用過,但用python寫過不少爬蟲。
相對來說以上四門語言我還都很熟悉,不存在新手不懂這門語言,發揮不出性能這種事了吧?
然后報一下機器配置,配置算是中等偏上吧,但是寫代碼足夠了。
說一下測試邏輯
一個求水仙花數的算法,然后執行一萬次。測試每門語言的執行時間。
為了結果可信度高,算法純手寫,不采用任何庫,第三方包。
首先測試老大哥c語言。
不得不說你大爺還是你大爺,別看你大爺年齡大,依然寶刀未老,做起事情來依然長槍直入。
測試結果僅為 1009ms。速度不錯,但其他語言還沒有執行,也不好說c究竟有多牛B。
?
#include<stdio.h>#include "stdafx.h"#include<time.h> //用到clock()函數void NarcissisticNumber() {int ge, shi, bai;for (int n = 100; n < 100000; n++) {ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int)(n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n) {//printf("%d", n); }}}int main(){int begintime, endtime;int a[1002];begintime = clock();int i = 100; for (i = 1; i <= 10000; i++) {NarcissisticNumber();}endtime = clock(); printf("Running Time:%dms ", endtime - begintime);getchar();return 0;}?
與其說c是你大爺,C#可能是個小家碧玉,小妞不錯,要臉蛋有臉蛋要身材有身材,聽話懂事。就是微軟這個家長家教太嚴不讓出門。
現在他爹似乎意識到了這一點,鼓勵c#出去闖闖,爭取變成大家閨秀,好了到我們的小家碧玉大顯身手的時候了,測試結果15130比他大爺慢了十倍多。
?
static void Main(string[] args){Stopwatch watch = new Stopwatch();Console.WriteLine("開始計時");watch.Start();for (int i = 1; i < 10000; i++){NarcissisticNumber();}watch.Stop();string time = watch.ElapsedMilliseconds.ToString();Console.WriteLine($"C#執行時間:{time}");Console.ReadKey();}public static void NarcissisticNumber(){int ge, shi, bai;for (int n = 100; n < 100000; n++){ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int)(n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n){//Console.WriteLine(n.ToString()); }}}?
到我們的性感少婦了,java從出道以來,追求者無數。至今不知道多少企業臨幸過java,多少門技術厚著臉皮,窮追不舍得追求著java這小niang們。俗話說的好,
美女身后蒼蠅多,java身后的蒼蠅簡直多的數不勝數。但是java這小妖精玩得轉,身后的蒼蠅們(庫)不乏優秀能干者。
好了我們看看少婦的辦事能力9372ms,這個結果真的有夠驚訝。本以為在微軟的平臺上,java的執行效率不會高過c#(白白浪費了我臨幸c#這么多年)。結果居然
高出了一大截。
?
public static void main(String args[]) {System.out.println("開始計算");long startTime = System.currentTimeMillis();for (int i = 1; i < 10000; i++) {NarcissisticNumber();}long endTime = System.currentTimeMillis();System.out.println("程序運行時間:" + (endTime - startTime) );}public static void NarcissisticNumber() {int ge, shi, bai;for (int n = 100; n < 100000; n++) {ge = n % 10;shi = (n - ge) / 10 % 10;bai = (int) (n / 100);if (ge * ge * ge + shi * shi * shi + bai * bai * bai == n) {//System.out.println(String.valueOf(n)); }}}?
接下來到我們的小妖精了,python真的我只能用小妖精來形容他。雖然他出生的很早,但是一直默默無聞。就是這些年突然爆發了,簡直無所不能。
游戲,網站,應用程序,爬蟲,AI。這小妖精就是用妖法迷住了大家,小妖精就是小妖精,活好不粘人,一切本著不主動、不拒絕、不負責的行事原則。你大爺(c)手藝牛逼,老年人嘮叨(代碼復雜)。
小家碧玉雖然好奈何教教太嚴,性感少婦蒼蠅多。小妖精簡直不要太簡單。
好了,看看我們的小妖精究竟有多大本事。。。。
首先我跟大家解釋下,其他語言進行了10000次水仙花,而python只進行1000次。是因為如果python要執行10000次幾分鐘都出不了結果,
我不敢相信這門語言真的差到這種程度,如果算法寫的有問題,還請大家指教。
python 1000次執行結果54404ms,完全沒法跟以上語言相比。這個結果我真的不敢相信。。。。
?
import timedef NarcissisticNumber():ge = 0shi = 0bai = 0for n in range(100,100000):ge = n% 10 shi = (n - ge) / 10 % 10 bai = int(n / 100)if ge * ge * ge + shi * shi * shi + bai * bai * bai == n:continueprint("開始計時") start = time.time() for each in range(1000):NarcissisticNumber()end = time.time();print("Python運行時間:"+str((end - start)*1000))?
最后強調下,以上所有debug模式。
好的,老鐵們。這篇文章收貨了太多黑跟質疑了。
首先我承認,有些問題牽考慮的。例如debug模式。
但是我無意黑C#,自打畢業以來每天都在敲c#,c#
對我的感情你們不了解,說我對比沒有意義的。我也承認
的確沒有意義,沒門語言都有自己的長項,本次測試僅僅
為了測試,難道你能因為java執行的比c#快就不再用c#?
技術這個東西永遠只有更高沒有最高,明天我還會更新本篇帖子的續篇。
這篇帖子只有這位老兄的回復最為中肯。 @五星
續篇里我改進以下幾個問題
1.不再使用debug,使用release模式。java直接編譯成.class文件直接運行
2.防止編譯時對代碼優化,if 里面要搞點事情
3.多次測試
最后再強調本次測試僅為測試,甚至可以說是為了玩,無意黑某門語言。這幾門語言每門語言我都喜歡。
技術討論觀點分歧再所難免,理性討論,請勿出言不遜。言行代表素質,代碼能力可以查,人的修養不能差。
我是擅長接受建議的,我也不抵觸反對,但反對他人的同時你要拿出你自己的見解與方案,要不然與鍵盤俠何異?
?
 轉載:https://www.cnblogs.com/abountme/p/10311654.html
 推薦內容:
【原創】JAVA面試解析(有贊一面)
java后臺面試知識點總結
java面試題:Spring
Java工程師面試題整理[社招篇]
Java入門篇(五)——字符串/String類
Java連接Oracle
Java面試題總結-Day2
java面試題----工廠模式大整理(面試問的較多)
Java 中的幾種線程池,你之前用對了嗎
Java面試經
?
總結
以上是生活随笔為你收集整理的这段代码,c 1秒,java 9秒,c# 14秒,而python。。。,java初级面试笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 虚幻引擎3的代码讲解
 - 下一篇: 本次操作由于这台计算机的限制而被取消u盘