第一篇:INTEL 80386 程序員參考手冊(第一章)
第一章 80386介紹
80386是一款32位處理器,為多任務(wù)操作系統(tǒng)作了優(yōu)化,為需要很高性能的應(yīng)用程序而設(shè)計(jì)。32位寄存器和數(shù)據(jù)通道支持32位地址和數(shù)據(jù)原型。處理器可以尋址4G物理存儲器和64T(264 字節(jié))虛擬存儲器。片上儲存期管理部件包括地址轉(zhuǎn)換寄存器,高級多任務(wù)固件,保護(hù)機(jī)制,以及頁虛擬存儲器。專用的調(diào)試寄存器即使在ROM程序中也能夠提供數(shù)據(jù)和代碼中斷點(diǎn)。
1.1 該手冊的組織結(jié)構(gòu)
該書從5個方面闡述了80386的體系結(jié)構(gòu):
第I部分
- 應(yīng)用程序 第II部分 - 系統(tǒng)編程 第III部分 - 兼容性 第IV部分 - 指令集 附錄
上面的分類一方面取決于體系結(jié)構(gòu)本身,一方面取決于使用這本書的不同方式。入下表所示,后面的2部分旨在作為參考手冊來幫組那些致力于在80386上開發(fā)軟件的程序員。前面的3部分則是理論說明,它們說明體系結(jié)構(gòu)的用途,解釋術(shù)語和概念,描述那些或與專屬用途相關(guān),或與專屬體系結(jié)構(gòu)相關(guān)的指令。
解釋說明
第I部分
- 應(yīng)用程序
第II部分 - 系統(tǒng)編程 第III部分 - 兼容性
參考 第IV部分 附錄
- 指令集
前面的3部分陳述了80386 CPU的執(zhí)行模式和保護(hù)特性。應(yīng)用特性和系統(tǒng)特性的區(qū)別由80386的保護(hù)機(jī)制決定。保護(hù)機(jī)制的主要用意在于是操作系統(tǒng)免于應(yīng)用的干擾;因此,處理器使得一些寄存器和和指令不能被應(yīng)用程序訪問。第I部分討論的是可以被應(yīng)用訪問的特性;第II部分討論的特性只能由授權(quán)的系統(tǒng)軟件或在非保護(hù)模式下訪問。
80386的處理模式同樣控制著可訪問的特性。80386有3種處理模式:
1. 保護(hù)模式。2. 實(shí)地址模式。3. 虛擬8086模式。保護(hù)模式是80386處理器的正常的32位環(huán)境。在這種模式下,所有的指令和特性均可使用。
上電后處理器即進(jìn)入實(shí)地址模式(經(jīng)常簡稱為“實(shí)模式”)。實(shí)地址模式下,80386看起來像是一個更快速的,增加了一些新指令的8086。大多數(shù)80386軟件在實(shí)地址模式下只是進(jìn)行一些初始化操作。
虛擬8086模式(也常被稱作“V86模式”)是一種動態(tài)模式,在這種意思上說,處理器可以頻繁,快速的在V86模式和保護(hù)模式之間切換。CPU從保護(hù)模式進(jìn)入V86模式去執(zhí)行8086程序,然后再離開V86模式,進(jìn)入保護(hù)模式繼續(xù)執(zhí)行原來的80386程序。
在保護(hù)模式下可使用的任何特性在V86模式下對于所有程序來說是一樣的。這些特性構(gòu)成了第I部分。在保護(hù)模式下系統(tǒng)軟件可以使用的其他一些特性組成了第II部分。第III部分闡述了實(shí)地址模式和V86模式,也包括如何執(zhí)行一個32位和16位的混合程序。
所有模式下可使用
第I部分-應(yīng)用程序 只能在保護(hù)模式下使用 第II部分-系統(tǒng)編程 兼容模式
第III部分-兼容性
1.1.1 第I部分-應(yīng)用編程
這部分呈現(xiàn)的是通常被應(yīng)用程序員使用的特性。
第2章-基本編程模型:介紹了存儲器的組織結(jié)構(gòu)模型。定義數(shù)據(jù)類型。列舉應(yīng)用程序使用的寄存器集合。介紹堆棧。說明字符串操作。定義指令的組成。解釋了地址計(jì)算。介紹應(yīng)用程序可能用到的阿中斷和異常。
第3章-應(yīng)用指令集:縱覽應(yīng)用程序經(jīng)常使用的指令。將指令按照功能分組;例如,字符串指令被分在一組,控制-傳輸指令被分在另一組。解釋指令的概念。關(guān)于單個指令的詳細(xì)介紹被放到了第IV部分,指令集參考。
1.1.2 第II部分-系統(tǒng)編程
這部分闡述的特性通常被下面的人使用:寫操作系統(tǒng),設(shè)備驅(qū)動,調(diào)試器以及為80386保護(hù)模式下應(yīng)用程序提供支持的其他軟件的人。
第4章-系統(tǒng)架構(gòu):縱覽系統(tǒng)程序員使用的各項(xiàng)特性。介紹在第I部分沒有提及的寄存器和數(shù)據(jù)結(jié)構(gòu)。介紹面向系統(tǒng)的指令以及它們支持的寄存器和數(shù)據(jù)結(jié)構(gòu)上下文。指出在在哪些章節(jié)可以找到寄存器,數(shù)據(jù)結(jié)構(gòu)以及指令的詳細(xì)信息。
第5章-內(nèi)存管理:闡述了支持虛擬存儲器的數(shù)據(jù)結(jié)構(gòu),寄存器以及指令的詳細(xì)結(jié)構(gòu),以及段和頁的概念。解釋了設(shè)計(jì)者怎樣選擇存儲器的組織模型,從完全線性(“平坦模式”)到使用頁和段。
第6章-保護(hù):展開存儲器管理特性,包括它應(yīng)用與斷和頁時的保護(hù)。說明了特權(quán)等級,堆棧切換,指針檢查以及用戶和超級用戶模式的實(shí)現(xiàn)。多任務(wù)的保護(hù)被推遲到后面的章節(jié)。
第7章-多任務(wù):闡述了硬件如何通過上下文切換和任務(wù)間保護(hù)來支持多任務(wù)。
第8章-輸入/輸出:揭示I/O特性,包括I/O指令,I/O的保護(hù),以及I/O許可映射。
第9章-異常和中斷:解釋了80386中斷的基本運(yùn)行機(jī)制。中斷和異常怎樣和保護(hù)相聯(lián)系。討論了所有可能的異常,列舉了觸發(fā)條件和需要處理的信息,以及異常的恢復(fù)。
第10章-初始化:定義了處理器在復(fù)位或上電后的狀態(tài)。說明了為實(shí)地址模式和保護(hù)模式設(shè)置寄存器,標(biāo)志位以及數(shù)據(jù)結(jié)構(gòu)。包含一個初始化示例。
第11章-協(xié)處理和多處理:解釋了支持?jǐn)?shù)字協(xié)處理器和共享存儲器的多CPU的指令。
第12章-調(diào)試:告訴我們怎樣使用調(diào)試寄存器。
1.1.3 第III部分-兼容性
本書的其他章節(jié)基本上把處理器看作是32位機(jī)器,為了簡單而省略了16操作部件。確實(shí),80386是32位機(jī)器,但是它的設(shè)計(jì)完全支持16位的操作數(shù)和尋址。這部分通過對在32位程序中支持16位程序和16位操作數(shù)的說明完整的描述了80386的結(jié)構(gòu)特性。所有的3種模式均可執(zhí)行16位程序:保護(hù)模式可以直接執(zhí)行80286保護(hù)模式下的16位程序,實(shí)地址模式執(zhí)行8086程序和80286實(shí)地址模式程序,虛擬8086模式在多任務(wù)環(huán)境下和其他80386保護(hù)模式程序一起執(zhí)行8086程序。另外,32位和16位模塊可以在保護(hù)模式下與32位和16位操作混合使用。
第13章-執(zhí)行80286保護(hù)模式代碼:在保護(hù)模式下,80386完全可以執(zhí)行80286保護(hù)模式代碼,因?yàn)?0286是80386的子集。
第14章-80386實(shí)地址模式:說明80386的實(shí)地址模式。在這種模式下,80386看起來更像是一個快速的實(shí)地址模式下的80286,或增加了新指令的快速8086。
第15章-虛擬8086模式:80386能夠快速的在保護(hù)模式和虛擬8086模式之間切換。這使其有能力在32位“本地模式”程序之間執(zhí)行8086的多道程序。
第16章-混合16位和32位編碼:即使在同一個程序或任務(wù)內(nèi),80386也能夠混合16位和32位編碼。而且,任何給定的模塊可以同時使用16位和32位操作數(shù)和地址。1.1.4 第IV部分-指令集
第I,II,III部分給出了指令和體系結(jié)構(gòu)特定細(xì)節(jié)相關(guān)的總體描述,這部分用字母序列出了指令集,為匯編程序員,編寫調(diào)試器,編譯器,操作系統(tǒng)的人等提供了具體細(xì)節(jié)。指令介紹包括操作的邏輯描述,對標(biāo)志位的影響,設(shè)置標(biāo)志位的影響,操作數(shù)或地址長度屬性的影響,處理器模式的影響以及可能產(chǎn)生的異常。
1.1.5 附錄
附錄給出了編碼表和其他細(xì)節(jié),它們被組織成了可以被匯編程序員和系統(tǒng)程序員快速索引的形式。
1.2 其他文獻(xiàn)
下面的書籍包含有關(guān)80386的其他資料。
● Introduction to the 80386, order number 231252 ● 80386 Hardware Reference Manual, order number 231732 ● 80386 System Software Writer's Guide, order number 231499 ● 80386 High Performance 32-bit Microprocessor with Integrated Memory Management(Data Sheet), order number 231630
1.3 符號轉(zhuǎn)換
本手冊在描述數(shù)據(jù)結(jié)構(gòu),指令助記符,十六進(jìn)制數(shù)以及上標(biāo)和下標(biāo)時用了特殊的符號。下標(biāo)用{}括起來,例如10{2} = 10 以2為基。上標(biāo)用()加上前面的^來表示,例如,10^(3)= 10的3次冪。復(fù)習(xí)這些符號有助于以后的閱讀。
1.3.1 數(shù)據(jù)結(jié)構(gòu)格式
在內(nèi)存數(shù)據(jù)結(jié)構(gòu)的示例圖中,低位地址出現(xiàn)在圖示的右邊;地址從右至左,從下往上遞增。位從右向左依次編號。圖1-1舉例說明了這種慣例。1.3.2 未定義位和軟件兼容性
在許多寄存器和存儲器的布局圖中,一些位被標(biāo)記為未定義。當(dāng)位標(biāo)記為未定義(如圖1-1所示)時,將來的軟件將這些位按未定義來處理對于軟件兼容性非常重要。在處理未定義位時軟件應(yīng)該遵循下列規(guī)則:
? 在測試含有未定義位的寄存器時,不要依賴這些位的狀態(tài)。在測試前要屏蔽掉這些未定義位。
? 在將寄存器的值拷貝到另一個寄存器時,不要依賴這些位。? 不要依賴于保留在已寫入未定義位的信息。? 裝載寄存器時,要始終把未定義位按0載入,或以之前存在寄存器中的值重新載入。
注意: 依賴于寄存器中的未定義位將導(dǎo)致軟件依賴于80386在處理這些位時的未指定的處理方式。如果將來的處理器使用了未定義位,那么依賴于這些位的軟件有不兼容的風(fēng)險。任何軟件都要避免依賴于未定義的80386寄存器位。
1.3.3 指令操作數(shù)
當(dāng)用符號表示指令時,你正在使用的是80386匯編指令集。在這個集合中,指令遵循下面的格式:
標(biāo)號:前綴 助記符 參數(shù)1,參數(shù)2,參數(shù)3
這里: ? ? ? ? 標(biāo)號是指令的標(biāo)識符,后面跟冒號。前綴是一條指令前綴的可選保留名字。
助記符暗示指令執(zhí)行的操作,操作碼中的一個保留字。
操作數(shù)參數(shù)1,參數(shù)2,參數(shù)3為可選項(xiàng)??梢杂?-3個參數(shù),取決于指令碼。當(dāng)含有參數(shù)時,它們或者是立即數(shù),或者是數(shù)據(jù)項(xiàng)的標(biāo)識符。操作數(shù)標(biāo)識符可以是寄存器的保留字,或者在其他程序中聲明(在例子中可能沒有這種形式),指向數(shù)據(jù)項(xiàng)。當(dāng)修改數(shù)據(jù)的指令中含有兩個操作數(shù)時,右邊的是源操作數(shù),左邊的是目的操作數(shù)。
例子:
LOADREG: MOV EAX, SUBTOTAL
本例中,LOADREG是標(biāo)號,MOV是操作碼指令助記符,EAX是目的操作數(shù),SUBTOTAL是源操作數(shù)。
1.3.4 十六進(jìn)制數(shù)
十六進(jìn)制數(shù)字后面加上H的字符串表示以16為基的數(shù)字。十六進(jìn)制數(shù)字從下面的集合中選?。?,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F)。某些情況下,特別是在程序語法例子中,一個前導(dǎo)零會被加在A-F前面。例如,0FH等于十進(jìn)制的15。
1.3.5 上標(biāo)和下標(biāo)
本手冊使用特殊的符號來表示上標(biāo)和下標(biāo)。下標(biāo)用{}括起來,例如10{2} = 10 以2為基。上標(biāo)用()加上前面的^來表示,例如,10^(3)= 10的3次冪。
編者注:本手冊在適當(dāng)?shù)牡胤接脤?shí)際形式來表示上標(biāo)和下標(biāo)。
第二篇:程序員入門進(jìn)階手冊
這篇文章,我主要是讓你成為更為專業(yè)的入門程序員。請注意,此時,你可能需要讀一些比較枯燥的書,但我想說,這些是非常非常重要的。你一定要堅(jiān)持住。
編程技能
在系統(tǒng)地學(xué)習(xí)編程技能之前,我希望你能先看一下 “ The Key To Accelerating Your Coding Skills”,這篇文章會告訴你如何有效地快速提高自己的編程能力。然后接下來是下面幾大塊內(nèi)容,但還只是入門級的。
編程技巧方面這個階段,你可以開始了解一下 Java 語言了,我個人覺得 Java 是世界上目前為止綜合排名最好的語言。你一定要學(xué)好這門語言。推薦《Java 核心技術(shù)(卷 1)》,除了讓你了解 Java 的語法,它還會讓你了解面向?qū)ο缶幊淌莻€什么概念(如果你覺得這本書有點(diǎn)深,那么,你可以降低難度看更為基礎(chǔ)的《Head First Java》)。然后,既然開始學(xué)習(xí)Java 了,那就一定要學(xué) Spring,推薦看看《Spring in Action》或是直接從最新的 Spring Boot 開始,推薦看看《Spring Boot 實(shí)戰(zhàn)》。關(guān)于 Spring 的這兩本書,里面可能會有很多你從來沒有聽說過的東西,比如,IoC 和 AOP 之類的東西,能看懂多少就看懂多少,沒事兒。?
操作系統(tǒng)。這里你可以看看《鳥哥的 Linux 私房菜》,這本書會讓你對計(jì)算機(jī)和操作系統(tǒng),以及 Linux 有一個非常全面的了解,并能夠管理或是操作好一個 Linux 系統(tǒng)。當(dāng)然,這本書有很多比較專業(yè)的知識,你可能會看不懂,沒關(guān)系,就暫時略過就好了。這本書的確并不適合初學(xué)者,你能看多少就看多少吧。
? 網(wǎng)絡(luò)協(xié)議你需要系統(tǒng)地了解一下數(shù)據(jù)庫設(shè)計(jì)中的那些東西,這里推薦慕課網(wǎng)的一個在線課程--“數(shù)據(jù)庫設(shè)計(jì)的那些事”。每個小課程不過 5-6 分鐘,全部不到 2 個小時,我相信你一定能跟下來。你需要搞清楚數(shù)據(jù)的那幾個范式,還有 SQL 語句的一些用法。當(dāng)然,你還要學(xué)習(xí)和使用一下數(shù)據(jù)庫,這里推薦學(xué)習(xí)開源的 MySQL。你可以看官方文檔,也可以看一下這本書《MySQL 必知必會》。? 前端方面在你處理中文時有時會發(fā)現(xiàn)有亂碼出現(xiàn),此時需要了解 ASCII 和 Unicode 這樣的字符編碼。這里推薦一篇文章Character encoding。還有 Github 上的這兩個 Awesome 倉庫:Awesome Unicode 和 Awesome Code Points。?
為什么轉(zhuǎn)成 Java 語言?
相信你可能會問,為什么之前學(xué)習(xí)的 Python 和 JavaScript 不接著學(xué),而是直接切到 Java 語言上來,這樣會不會切得太快了。這是一個好問題,這里需要說明一下,為什么我會切到 Java 這個語言上來,主要是有以下幾方面考慮。1.Java 是所有語言里面綜合實(shí)力最強(qiáng)的,這也是為什么幾乎所有大型的互聯(lián)網(wǎng)或是分布式架構(gòu)基本上都是 Java 技術(shù)棧。所以,這是一個工業(yè)級的編程語言(Python 和 JavaScript 還達(dá)不到這樣的水準(zhǔn))。
2.之所以,沒有用 Java 來做入門語言而是用了 Python,這是因?yàn)榫幊淌且患容^費(fèi)腦子的事,一開始學(xué)習(xí)時,興趣的培養(yǎng)很重要。Python 比較簡單,容易上手,能夠比較容易地提起興趣,而用 Java 則可能比較難。3.在你有了一些編程語言的基礎(chǔ)后,有了一些代碼的邏輯后,切到工業(yè)級的編程語言上來,更為專業(yè)地學(xué)習(xí)編程,是非常有幫助的。像 Python 和 JavaScript 這樣的動態(tài)語言用著是很爽,但是,只有像 C、C++ 和 Java 這樣的靜態(tài)語言才可以讓你真正地進(jìn)階。
4.對于一個合格的程序員,掌握幾門語言是非常正常的事情。一方面,這會讓你對不同的語言進(jìn)行比較,讓你有更多的思考。另一方面,這也是一種學(xué)習(xí)能力的培養(yǎng),會讓你對于未來的新技術(shù)學(xué)習(xí)得更快。很多時候,一些程序員只在自己熟悉的技術(shù)而不是合適的技術(shù)上工作,這其實(shí)并不好,這會讓你的視野受限,而視野會決定你的高度。綜上所述,這就是在入門的時候我故意讓你多學(xué)幾門語言的原因。
編程工具
編程工具方面,你需要開始學(xué)習(xí)使用下面這些工具了。
? 編程的 IDE。傳統(tǒng)一點(diǎn)的,你可以使用 Eclipse。當(dāng)然,我推薦你使用 Intellij IDEA。這兩個工具都可以開發(fā)各種語言,但是主要用在 Java。如果你想玩得更時髦一些的話,使用 Visual Studio Code 也不錯,這個工具潛力十足,用其開發(fā) Python、JavaScript、Java、Go、C 和 C++ 都能得心應(yīng)手(教程-本文發(fā)布時還基本沒怎么翻譯完)。
? 版本管理工具。版本管理工具是非常重要的編程工具。傳統(tǒng)的有 P4、SVN、CVS 等,但都會被 Git 取代,所以,你就只用學(xué)習(xí)Git 就好了。學(xué)習(xí)Git 的教程網(wǎng)上有很多,這里我推薦非常系統(tǒng)的 Pro Git 第二版(如 果你覺得 Pro Git 比較枯燥的話,備選猴子都能懂的 Git 入門),然后你要學(xué)會使用 GitHub。關(guān)于一些 Git 環(huán)境安裝和準(zhǔn)備以及 GitHub 使用,你可以自行 Google(比如:這篇Github and Git 圖文教程 或是這篇Git 圖文教程及詳解)。
? 調(diào)試前端程序。你需要學(xué)會使用 Chrome 調(diào)試前端程序,Google 一下會有很多文章,你可以看看 超完整的 Chrome 瀏覽器客戶端調(diào)試大全。? 數(shù)據(jù)庫設(shè)計(jì)工具。你需要學(xué)會使用 MySQL WorkBench,這個工具很容易使用。相關(guān)的手冊,你可以看一下官方文檔。
實(shí)踐項(xiàng)目
這回我們需要設(shè)計(jì)一個投票系統(tǒng)的項(xiàng)目。業(yè)務(wù)上的需求如下:
? ? ? ? ? 用戶只有在登錄后,才可以生成投票表單。投票項(xiàng)可以單選,可以多選。
其它用戶投票后顯示當(dāng)前投票結(jié)果(但是不能刷票)。投票有相應(yīng)的時間,頁面上需要出現(xiàn)倒計(jì)時。
投票結(jié)果需要用不同顏色不同長度的橫條,并顯示百分比和人數(shù)。
技術(shù)上的需求如下:
這回要用 Java Spring Boot 來實(shí)現(xiàn)了,然后,后端不返回任何的 HTML,只返回 JSon 數(shù)據(jù)給前端。
? 由前端的 JQuery 來處理并操作相關(guān)的 HTML 動態(tài)生成在前端展示的頁面。
? 前端的頁面還要是響應(yīng)式的,也就是可以在手機(jī)端和電腦端有不同的呈現(xiàn)。這個可以用 Bootstrap 來完成。?
如果你有興趣,還可以挑戰(zhàn)以下這些功能。
在微信中,通過微信授權(quán)后記錄用戶信息,以防止刷票。? 可以不用刷頁面,就可以動態(tài)地看到投票結(jié)果的變化。
? Google 一些畫圖表的 JavaScript 庫,然后把圖片表得風(fēng)騷一些。?
小結(jié) 上面那些書和知識你要看完,還要能理解并掌握,我估計(jì)你最少也要花 1-2 年左右的時間。如果你能夠走到這里,把前面的那些知識都了解了,不用精通,能獨(dú)立地做出上面的那些實(shí)踐項(xiàng)目,那么,你就算是真正的入門了。
而且,你已經(jīng)是一個 “ 全棧工程師 ” 的樣子了,在這里我要給你一個大大的贊。如果這個時候,你對編程還有很大的熱情,那么我要恭喜你了,你可能會是一個非常不錯的程序員。加油啊!
上面的那些技術(shù)已經(jīng)算是比較專業(yè)的了。如果你已經(jīng)大致掌握了,我相信你可以找到至少年薪 20 萬以上的工作了,而且你的知識面算是有不錯的廣度了。但是深度還不夠,這個時候,是一個比較關(guān)鍵點(diǎn)了。
你可能已經(jīng)沉醉在沾沾自喜的驕傲的情緒中,那么你也可以就此止步,加入一些公司,在那里按部就班地完成一些功能性的開發(fā),成為一個搬磚的碼農(nóng)。你也可以開始選擇一個方向開始深入。
我給你的建議是選擇一個方向開始深入。因?yàn)槟悴⒉恢滥阄磥頃卸啻蟮目赡苄?,也不知道你會成為什么樣的人,所以為什么不再更努力一把呢?/p>
后面,我們就開始非常專業(yè)的程序員之路了。這也是一般程序員和高級程序員的分水嶺了,能不能過去就看你的了。
第三篇:FastReport 4程序員手冊
FastReport 程序員手冊
一、使用TfrxReport 組件工作
1、加載并存儲報表
默認(rèn)情況下,報表窗體同項(xiàng)目窗體構(gòu)存儲在同一個DFM文件中。多數(shù)情況下,無須再操作,因而你就不必采用特殊方法加載報表。如果你決定在文件中存儲報表窗體或者是數(shù)據(jù)庫的Blob字段(他提供了非常大的彈性,你能夠在非編譯程序中修改),你必須使用“TfrxReport”提供的加載和存儲方法。
function LoadFromFile(const FileName: String;ExceptionIfNotFound: Boolean = False): Boolean;從一個給定名字文件中加載報表。如果第二個參數(shù)等于“True”并且文件沒找到,那么他會觸發(fā)一個異常。如果文件加載成功,他返回“True”。
procedure LoadFromStream(Stream: TStream);從流中加載報表。
procedure SaveToFile(const FileName: String);用特殊名稱文件存儲報表。
procedure SaveToStream(Stream: TStream);把報表存在流中。
例如: Pascal: frxReport1.LoadFromFile('c:1.fr3');frxReport1.SaveToFile('c:2.fr3');C++: frxReport1->LoadFromFile(“c:1.fr3”);
frxReport1->SaveToFile(“c:2.fr3”);
2.設(shè)計(jì)報表
通過“TfrxReport.DesignReport”方法調(diào)用報表設(shè)計(jì)器。你必須在你的項(xiàng)目中包含報表設(shè)計(jì)器(必要條件是:要么使用“TfrxDesigner”組件,要么增加“frxDesgn”單元到uses列表)“DesigReport”方法接受兩個默認(rèn)參數(shù):
procedure DesignReport(Modal: Boolean = True;MDIChild: Boolean = False);Modal參數(shù)決定設(shè)計(jì)器是否被模態(tài),MDIChild參數(shù)允許把設(shè)計(jì)器窗體作為一個MDI子窗體。
例如:
frxReport1.DesignReport;
3.運(yùn)行報表
應(yīng)用下面兩個“TfrxReport”方法中的一個啟動報表: procedure ShowReport(ClearLastReport: Boolean = True);啟動報表并在預(yù)覽窗體中顯示。如果“ClearLastReport”參數(shù)等于“False”,報表將會增加先前的一個報表結(jié)果,否則清除前一個報表結(jié)構(gòu)。
function PrepareReport(ClearLastReport: Boolean = True): Boolean;啟動報表,沒有打開預(yù)覽窗體,參數(shù)賦值與“ShowReport”方法同名。如果報表構(gòu)造成功,他返回“True”。
多數(shù)情況下,使用第一種方法更為方便一些。在報表被構(gòu)造的同時,他會立刻顯示一個預(yù)覽窗體。
當(dāng)需要增加另一個報表到前一個報表中的時候,“ClearLastReport”參數(shù)顯得方便些。(此類技術(shù)用于批量報表打?。?。
例如:
frxReport1.ShowReport;
4.預(yù)覽報表
使用兩種途徑顯示一個報表是可能的:兩者都是調(diào)用“TfrxReport.ShowReport”方法(先前描述過了),或者使用“TfrxReport.ShowPreparedReport”方法來幫助實(shí)現(xiàn)。在第二種情況下,報表構(gòu)造沒有被執(zhí)行,但顯示了一個完成的報表。也就是說,你要么在“PreparedReport”方法幫助下構(gòu)造他,要么在構(gòu)造前從文件中加載報表(查看“加載/存儲完成的報表”)
例如:
Pascal: if frxReport1.PrepareReport then frxReport1.ShowPreparedReport;C++:
if(frxReport1->PrepareReport(true))frxReport1->ShowPreparedReport();
在這種情況下,報表構(gòu)造器先被完成了,并顯示在預(yù)覽窗體中。構(gòu)造一個龐大的報表可能要花費(fèi)很多時間,那就是為什么使用“ShowReport”非等時同步方法會好于
“PrepareReport/ShowPreparedReport”方法。你可以通過“TfrxReport.PreviewOptions”屬的缺省值設(shè)定預(yù)覽參數(shù)值。(這句翻譯的不夠好,請參考原文)
原文參考:In this case, report construction is finished first, and after that it is displayed in the preview window.Construction of a large report can take
a lot of time, and that is why it is better to use the “ShowReport anisochronous” method, than the “PrepareReport/ShowPreparedReport” one.One can assign
preview settings by default via the “TfrxReport.PreviewOptions” property.[SPAN]
5、打印報表大多數(shù)情況下,你可以從預(yù)覽窗體打印報表。要人工打印報表,你應(yīng)該使用“TfrxReport.Print”方法,例如:
frxReport1.LoadFromFile(...);
frxReport1.PrepareReport;
frxReport1.Print;
同時,你可以在顯示的打印對話框中設(shè)置打印參數(shù),你也可以使用默認(rèn)設(shè)定值。取消打印對話框,請參考“TfrxReport.PrintOptions”屬性幫助
6.載入并存儲報表
這個功能可以在預(yù)覽窗口中執(zhí)行。也可以使用手工方法執(zhí)行,幫助參考“TfrxReport.PreviewPages”方法:
function LoadFromFile(const FileName: String;ExceptionIfNotFound: Boolean = False): Boolean;
procedure SaveToFile(const FileName: String);
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);賦值和參數(shù)化類似與TfrxReport相應(yīng)的方法。文件包含了完成的報表,默認(rèn)情況下以“FP3”為擴(kuò)展名。
例如: Pascal: frxReport1.PreviewPages.LoadFromFile('c:1.fp3');frxReport1.ShowPreparedReport;
C++: frxReport1->PreviewPages->LoadFromFile(“c:1.fp3”);frxReport1->ShowPreparedReport();
注意,完成的報表加載完畢后,預(yù)覽方法是通過“ShowPreparedReport” 方法執(zhí)行的。
7.導(dǎo)出報表
他可以從預(yù)覽窗口中執(zhí)行。也可以手動操作,通過“FfrxReport.Export”方法,及這個方法中的參數(shù),你可以導(dǎo)出你想要導(dǎo)出的文件類型:
frxReport1.Export(frxHTMLExport1);
導(dǎo)出過濾組件必須是有效的(你必須把他們放到你項(xiàng)目中的窗體上)并調(diào)整正確。
The export filter component must be available(you must put it on the form of your project)and be adjusted correctly.8.創(chuàng)建自定義預(yù)覽窗體
FastReport在標(biāo)準(zhǔn)的預(yù)覽窗口中顯示報表。如果因?yàn)槟承┰蚨贿m合你,你可以創(chuàng)建一個自定義預(yù)覽窗體。為了這個目的,需要設(shè)計(jì)FastReport組件面板中的“TfrxReport”組件。要顯示報表,TfrxReport.Preview方法應(yīng)該連接到這個組件。
在使用TfrxPreview組件的時候,有兩個典型的問題。他不會處理按鍵(箭頭,PgUp,PgDown等等)和鼠標(biāo)滾輪(如果有的話)。要讓TfrxPreview同按鍵工作,設(shè)置焦點(diǎn)給他(他是可以做到的,例如,在窗體的OnShow事件句柄中)
frxPreview.SetFocus;
要讓TfrxPreview同鼠標(biāo)滾輪工作,你必須創(chuàng)建OnMouseWheel事件句柄,并且調(diào)用TfrxPreview.MouseWheelScroll方法。
procedure TForm1.FormMouseWheel(Sender: TObject;Shift: TShiftState;WheelDelta: Integer;MousePos: TPoint;var Handled: Boolean);begin frxPreview1.MouseWheelScroll(WheelDelta);end;
9.建立復(fù)合報表(批量打?。?/p>
在某些情況下,需要立刻組織幾個報表打印,或者在一個打印預(yù)覽窗體中封裝并呈現(xiàn)幾個報表。要執(zhí)行這些,在FastReport中有些工具能夠允許建立一個新的報表附加在一個已經(jīng)存在的報表上。“TfrxReport.PrepareReport”方法中有一個選項(xiàng)“ClearLasReport”布爾類型參數(shù),默認(rèn)情況下他等于True,這個參數(shù)定義了是否有必要在建立報表時清除前一個報表。下面的方法展示了如何從兩個報表中建立一個批量報表: Pascal:
frxReport1.LoadFromFile('1.fr3');frxReport1.PrepareReport;frxReport1.LoadFromFile('2.fr3');frxReport1.PrepareReport(False);frxReport1.ShowPreparedReport;
C++:
frxReport1->LoadFromFile(“1.fr3”);frxReport1->PrepareReport(true);frxReport1->LoadFromFile(“2.fr3”);frxReport1->PrepareReport(false);frxReport1->ShowPreparedReport();我們加載并建立第一個報表,但并沒有顯示他。然后我們加載第二個報表到同一個TfrxReport對象,并使用“ClearLastReport”參數(shù),讓他等于False。這就允許第二個報表附加在先前建立的報表之后。接下來,我們在預(yù)覽窗口中顯示一個完成的報表。
9.1 復(fù)合報表中的頁數(shù)
你可以使用“Page”,“Page#”,“TotalPages”和“TotalPages#”系統(tǒng)變量顯示頁數(shù)或總頁數(shù),在復(fù)合報表中,這些變量以下面的方式工作: Page批量報表頁數(shù)
TotalPages批量報表總頁數(shù)
9.2 合并符合報表頁數(shù)
正如上面所說的,報表設(shè)計(jì)頁中的“PrintOnPrevousPage”方法讓你在打印報表的時候使用前一頁的剩余空間接合報表。在復(fù)合報表中,允許你在前一個報表的最后一頁的剩余空間創(chuàng)建一個新的報表。要執(zhí)行這個,要使能每一個連續(xù)報表的第一個設(shè)計(jì)頁“PrintOnPreviousePage”屬性[SPAN]10.交互報表
在交互報表中,你可以在預(yù)覽窗口定義任意報表對象的鼠標(biāo)單擊反應(yīng)。例如,一個用戶能夠單擊數(shù)據(jù)線,結(jié)果運(yùn)行一個帶有選擇線的明細(xì)數(shù)據(jù)。
任何報表都能交互。要執(zhí)行他,你僅僅需要創(chuàng)建TfrxReport.OnClickObject事件句柄。下面代碼是這個事件句柄的示例:
Pascal:
procedure TForm1.frxReport1ClickObject(Page: TfrxPage;View: TfrxView;Button: TMouseButton;Shift: TShiftState;var Modified: Boolean);begin if View.Name = 'Memo1' then ShowMessage('Memo1 contents:' + #13#10 + TfrxMemoView(View).Text);if View.Name = 'Memo2' then begin TfrxMemoView(View).Text := InputBox('Edit', 'Edit Memo2 text:', TfrxMemoView(View).Text);Modified := True;end;end;C++: void __fastcall TForm1::frxReport1ClickObject(TfrxView *Sender, TMouseButton Button, TShiftState Shift, bool &Modified){ TfrxMemoView * Memo;if(Memo = dynamic_cast
在對象的單擊事件句柄上,你可以做如下事情:
-修改一個對象或頁的內(nèi)容,傳遞句柄(結(jié)果,被修改的將被特殊標(biāo)記,因此修改的內(nèi)容應(yīng)該引起重視);
-由于使用重構(gòu)或重新建立報表,調(diào)用TfrxReport.PrepareReport方法
在此例中,點(diǎn)擊名字為memo1對象的結(jié)果顯示這個對象內(nèi)容的消息。當(dāng)點(diǎn)擊memo2是顯示一個對話框,這個對象的內(nèi)容可能被修改。設(shè)置Modified標(biāo)志為True,允許保持和顯示變更。
同樣的方法,單擊事件可以被定義成不同的響應(yīng)。例如,運(yùn)行一個新報表。如下注釋是必要的。在FastReport3版本中,一個報表組件可以在一個預(yù)覽窗口中顯示唯一的報表(不像FastReport2.x版本)。那就是為什么一個報表預(yù)覽窗也會在分開的對象中運(yùn)行一個報表,或者是同一個對象,但當(dāng)前報表必須被抹除。
關(guān)于給終端用戶一個可單擊對象提示定位,在預(yù)覽窗口中,鼠標(biāo)經(jīng)過一個可單擊對象的時候,我們可以修改鼠標(biāo)的光標(biāo)。要做到這些,在報表設(shè)計(jì)器上選擇一個要設(shè)計(jì)的對象并設(shè)置他的cursor屬性為不同于crDefault的某個值。
更多的細(xì)節(jié)涉及到定義的單擊對象。在簡單報表中,可以依照對象的名字或他的內(nèi)容來定義。然而,這就不能更多的執(zhí)行可修改的事例。例如,一個明細(xì)報表應(yīng)當(dāng)在一個數(shù)據(jù)選擇行被創(chuàng)建。一個用戶單擊了內(nèi)容為12的memo1對象。數(shù)據(jù)行讓這個對象參考什么?那就是為什么你應(yīng)當(dāng)知道主鍵了,主鍵用于明確的標(biāo)識這一行。FastReport能夠賦值一個字串,包含任意數(shù)據(jù)(在我們的事例主鍵數(shù)據(jù)中),對于每個報表對象,這個字串存儲在TagStr屬性中。
讓我們來通過一個報表的例子來舉例說明,這個報表包含在FastReportDemo.exe-'Simple list'示例中。這是一個公司的客戶列表,包含諸如客戶名稱,地址,聯(lián)系人等數(shù)據(jù)。數(shù)據(jù)源是來自DBDEMOS演示數(shù)據(jù)庫的Customer.db表。這個表有一個主鍵,CustNO字段,他沒有出現(xiàn)在報表中。我們的任務(wù)是終止他通過參考單擊完成報表上的任意對象記錄他,這就意味著要獲取主鍵的值,要執(zhí)行此項(xiàng)操作,就要為所有對象的TagStr屬性加入值,依賴于主數(shù)據(jù)欄: [Customers.“CustNo”]
在報表建立期間,使用相同的方法計(jì)算TagStr屬性內(nèi)容,同時計(jì)算文本對象的內(nèi)容;這就意味著變量值會替代所有變量的位置。變量細(xì)節(jié)使用方括號括起來。那就是為什么行值是'1005', '2112'等類似值了。在報表建立后,包含TagStr屬性對象的類型取決與主數(shù)據(jù)欄。一個簡單的從字串到整形的轉(zhuǎn)換就會提供給我們一個主鍵的值,這也是所需記錄能夠找到的主鍵。
如果主鍵是復(fù)合的(包含多個字段),TagStr屬性的內(nèi)容可能是如下值: [Table1.“Field1”];[Table1.“Field2”]
在構(gòu)造一個報表完成后,TagStr屬性包含“1000;1”類型值, 此值不同比相同要好。
11.從代碼中存取報表對象 報表對象(例如:report page, band, memo-object)是不能在你的代碼中直接存取的。這就意味著你不能通過名字尋址對象。例如,當(dāng)你在你的窗體上尋址一個按鈕。要尋址一個對象,在TfrxReport.FindObject方法中找到幫助:
Pascal: var Memo1: TfrxMemoView;Memo1 := frxReport1.FindObject('Memo1')as TfrxMemoView;C++: TfrxMemoView * Memo =
dynamic_cast
Pascal: var Page1: TfrxReportPage;Page1 := frxReport1.Pages[1] as TfrxReportPage;C++: TfrxReportPage * Page1 = dynamic_cast
12.從代碼中創(chuàng)建報表
作為一項(xiàng)規(guī)則,你將在設(shè)計(jì)器中創(chuàng)建多數(shù)報表。然而,在某些情況下(例如,當(dāng)報表窗體未知的時候),使用代碼手工創(chuàng)建一個報表是是十分必要的。想要手工創(chuàng)建一個報表,你需要執(zhí)行下面的順序步驟:添加數(shù)據(jù)源添加報表頁-添加欄頁
-設(shè)置欄屬性,接著把他們同數(shù)據(jù)相連
-在每個欄上加入對象
-設(shè)置對象屬性,接著把他們同數(shù)據(jù)相連
讓我們來檢查一下創(chuàng)建一個簡單報表的類型列表。假設(shè)我們擁有如下組件:frxReport1: TfrxReport and frxDBDataSet1: TfrxDBDataSet(最后一個連接到DBDEMOS數(shù)據(jù),Customer.db表)。我們的報表將包含一個帶有報表標(biāo)題和主數(shù)據(jù)欄的頁。在報表標(biāo)題欄上有一個帶有“Hellow FastReport”文本的對象,主數(shù)據(jù)欄包含一個帶有連接到“CustNo”字段的對象。
Pascal: var DataPage: TfrxDataPage;Page: TfrxReportPage;Band: TfrxBand;DataBand: TfrxMasterData;Memo: TfrxMemoView;
{ 清除報表 } frxReport1.Clear;{ 為報表添加數(shù)據(jù)集到可存取的列表中 } frxReport1.DataSets.Add(frxDBDataSet1);
{ 添加“Data”頁 } DataPage := TfrxDataPage.Create(frxReport1);
{ 添加頁 } Page := TfrxReportPage.Create(frxReport1);{ 創(chuàng)建唯一名稱 } Page.CreateUniqueName;{ 設(shè)置默認(rèn)字段大小, 紙張和打印方向 } Page.SetDefaults;{ 修改紙張方向 } Page.Orientation := poLandscape;
{ 添加一個報表標(biāo)題欄 } Band := TfrxReportTitle.Create(Page);Band.CreateUniqueName;{ it is sufficient to set the ?Top? coordinate and height for a band } { both coordinates are in pixels } Band.Top := 0;Band.Height := 20;
{ 為標(biāo)題欄添加一個對象 }
Memo := TfrxMemoView.Create(Band);Memo.CreateUniqueName;Memo.Text := 'Hello FastReport!';Memo.Height := 20;{ 這個對象將伸展坐標(biāo)到欄的寬度 } Memo.Align := baWidth;
{ 添加主數(shù)據(jù)欄 } DataBand := TfrxMasterData.Create(Page);DataBand.CreateUniqueName;DataBand.DataSet := frxDBDataSet1;{ 頂端的調(diào)整應(yīng)當(dāng)比先前加入欄的頂部+高度大一些 } DataBand.Top := 100;DataBand.Height := 20;
{ 在主數(shù)據(jù)欄上添加一個對象 } Memo := TfrxMemoView.Create(DataBand);Memo.CreateUniqueName;{ 連接數(shù)據(jù) } Memo.DataSet := frxDBDataSet1;Memo.DataField := 'CustNo';Memo.SetBounds(0, 0, 100, 20);{ 調(diào)整文本到右側(cè)的對象邊緣 } Memo.HAlign := haRight;
{ 顯示報表 } frxReport1.ShowReport;
C++:
TfrxDataPage * DataPage;TfrxReportPage * Page;TfrxBand * Band;TfrxMasterData * DataBand;TfrxMemoView * Memo;
// 清除報表
frxReport1->Clear();
// 在報表上添加一個數(shù)據(jù)集到數(shù)據(jù)集存取列表 frxReport1->DataSets->Add(frxDBDataset1);
// 添加“數(shù)據(jù)”頁
DataPage = new TfrxDataPage(frxReport1);// 添加一頁
Page = new TfrxReportPage(frxReport1);
// 創(chuàng)建一個不重復(fù)的名稱 Page->CreateUniqueName();
// 設(shè)置域大小, 紙張和默認(rèn)的打印方向 Page->SetDefaults();
// 修改紙張的打印方向
Page->Orientation = poLandscape;
// 增加一個報表標(biāo)題欄
Band = new TfrxReportTitle(Page);Band->CreateUniqueName();
// 為欄充分設(shè)置頂部坐標(biāo)和高度 // 在像素上包含坐標(biāo) Band->Top = 0;Band->Height = 20;
// 在報表標(biāo)題欄加入一個對象 Memo = new TfrxMemoView(Band);Memo->CreateUniqueName();Memo->Text = “Hello FastReport!”;Memo->Height = 20;
// 此對象將會被按照欄的寬度延展 Memo->Align = baWidth;
// 添加主數(shù)據(jù)欄
DataBand = new TfrxMasterData(Page);DataBand->CreateUniqueName();
DataBand->DataSet = frxDBDataset1;// 頂部坐標(biāo)應(yīng)該大于前邊添加欄的頂部坐標(biāo)+高度 DataBand->Top = 100;DataBand->Height = 20;
// 主數(shù)據(jù)上加入一個對象
Memo = new TfrxMemoView(DataBand);Memo->CreateUniqueName();// 連接到數(shù)據(jù)
Memo->DataSet = frxDBDataset1;Memo->DataField = “CustNo”;Memo->SetBounds(0, 0, 100, 20);
// 調(diào)整文本到右側(cè)對象的空白 Memo->HAlign = haRight;// 顯示報表
frxReport1->ShowReport(true);
讓我們來解釋一些細(xì)節(jié):
所有在報表中使用的數(shù)據(jù)集都必須添加到數(shù)據(jù)源列表中,在我們示例中,是用frxReport1.DataSets.Add(frxDBDataSet1)這一行執(zhí)行的。否則,報表就不會工作。
數(shù)據(jù)頁對于插入內(nèi)部數(shù)據(jù)集是必要的,例如TfrxADOTable。這些數(shù)據(jù)集只能放在數(shù)據(jù)頁。
調(diào)用Page.SetDefaults不是必須的,因?yàn)樵谶@個案例中頁A4紙張?jiān)O(shè)置和頁邊距都是0毫米。默認(rèn)值設(shè)置10毫米頁邊距,并捕獲打印機(jī)頁大小和對齊方式。
在增加欄到頁面的同時,你要確認(rèn)他們沒有互相重疊在一起。要執(zhí)行他,頂部和高度的坐標(biāo)是相似的??偸且谠O(shè)計(jì)器中定位相同的位置的。
對象的坐標(biāo)和大小是以像素為單位的,因?yàn)樗袑ο蟮膌eft, Top, Width和Height屬性都擁有擴(kuò)展類型,你能夠指出非整形值。下面常量用于轉(zhuǎn)化像素到厘米和英寸:
fr01cm = 3.77953;fr1cm = 37.7953;fr01in = 9.6;fr1in = 96;
例如,一個欄的高度等于5毫米如下設(shè)定: Band.Height := fr01cm * 5;Band.Height := fr1cm * 0.5;
12.代碼中創(chuàng)建對話框 我們知道,報表可以包含對話框窗體。下面的例子展示了如何創(chuàng)建一個帶有OK按鈕的對話框窗體:
Pascal:
{ for working with dialogue objects the following unit should be used }
uses frxDCtrl;var Page: TfrxDialogPage;Button: TfrxButtonControl;
{ 添加頁 } Page := TfrxDialogPage.Create(frxReport1);{ 創(chuàng)建唯一名稱 } Page.CreateUniqueName;{ 設(shè)置大小 } Page.Width := 200;Page.Height := 200;{ 設(shè)定位置 } Page.Position := poScreenCenter;
{ 添加一個按鈕 } Button := TfrxButtonControl.Create(Page);Button.CreateUniqueName;Button.Caption := 'OK';Button.ModalResult := mrOk;Button.SetBounds(60, 140, 75, 25);
{ 顯示報表 } frxReport1.ShowReport;C++:
//使用對話框?qū)ο蠊ぷ?,會用到下面的單?/p>
#include “frxDCtrl.hpp”
TfrxDialogPage * Page;TfrxButtonControl * Button;
//添加一頁
Page = new TfrxDialogPage(frxReport1);
//創(chuàng)建唯一名稱
Page->CreateUniqueName();
//設(shè)置大小 Page->Width = 200;Page->Height = 200;
//設(shè)定位置
Page->Position = poScreenCenter;
// 添加一個按鈕
Button = new TfrxButtonControl(Page);Button->CreateUniqueName();Button->Caption = “OK”;Button->ModalResult = mrOk;Button->SetBounds(60, 140, 75, 25);
//顯示報表
frxReport1->ShowReport(true);
第四篇:《程序員崗前培訓(xùn)手冊》
程序員崗前培訓(xùn)手冊
北京應(yīng)用技術(shù)大學(xué)
目錄(CONTENTS)
前言
面試是雙向選擇
軟件公司研發(fā)技術(shù)崗位掃描與崗位職責(zé)
如何快速融入技術(shù)團(tuán)隊(duì)(程序員入崗的注意事項(xiàng))優(yōu)秀程序員應(yīng)具有的品質(zhì)與習(xí)慣 談?wù)剬W(xué)習(xí)方法
外包軟件、商品軟件、項(xiàng)目軟件簡介
前言
同學(xué)們經(jīng)過在北京應(yīng)用技術(shù)大學(xué)兩年的學(xué)習(xí),都滿懷憧憬地向往程序人生的開始,也對即將走上的工作崗位和環(huán)境充滿了期待,期待通過程序來證明自我的價值。程序員,相信在很多同學(xué)眼中是一個有趣、特別、高薪、充滿艱辛而又非常神秘的職業(yè),因?yàn)槭窒履且恍行刑鴦拥拇a不僅實(shí)現(xiàn)了生動的功能,同時也表達(dá)著程序員對人生的理解和追求。當(dāng)程序員實(shí)現(xiàn)了一個獨(dú)到的創(chuàng)意之后準(zhǔn)備熄燈休息時,天已蒙蒙亮…..當(dāng)程序員看著用戶熟練地操作自己的軟件解決一個個復(fù)雜事件時,臉上那寫滿成就的微笑…..的確在這個行業(yè)里出現(xiàn)了太多的英雄人物和企業(yè),而每一個英雄的事跡和成就都足以讓我們熱血沸騰、摩拳擦掌……
在同學(xué)們即將步入程序員崗位之前,需要對軟件研發(fā)相關(guān)職位的職責(zé)范圍與工作特點(diǎn)有所了解,掌握一些入職的基本技巧和注意事項(xiàng),檢查自己的技能與行為習(xí)慣,有的放矢,提高面試和就業(yè)的成功率。入職后能盡快地融入到技術(shù)團(tuán)隊(duì),近而快速成長,成為團(tuán)隊(duì)技術(shù)骨干和最優(yōu)秀的職員。在工作中養(yǎng)成積極而良好的行為習(xí)慣和職業(yè)素養(yǎng),為自己的職業(yè)發(fā)展創(chuàng)造一個良好的開端。
本手冊從面試、技術(shù)崗位職責(zé)、如何快速融入技術(shù)團(tuán)隊(duì)、優(yōu)秀程序員的品質(zhì)與習(xí)慣、學(xué)習(xí)方法、外包軟件/商業(yè)軟件/項(xiàng)目軟件簡介等幾個方面闡述了同學(xué)們在踏入工作崗位之前應(yīng)該了解的知識和注意事項(xiàng)。
面試是雙向選擇
一般同學(xué)都會誤認(rèn)為面試時應(yīng)聘者處于弱勢,要接受招聘者的挑選,從而從心理上承受很大的壓力,而影響自己正常的發(fā)揮和才能展示。其實(shí)大可不必,因?yàn)槊嬖囀请p向的,選人和擇業(yè)是平等的。況且現(xiàn)在市面上的用人單位或招聘崗位也是良莠不齊,甚至還有一些騙子公司,這就要求同學(xué)們在應(yīng)聘時擦亮眼睛,注意分辨。當(dāng)然大多數(shù)公司都是良性的,他們要么是已具規(guī)模,各部門及崗位功能分工很明確,他們會根據(jù)業(yè)務(wù)的發(fā)展或作為人才儲備而有針對性的招聘相關(guān)技術(shù)人員,而有的公司可能是剛剛成立,業(yè)務(wù)與核心技術(shù)還未形成,他們需要招聘到能為他們提供解決方案或創(chuàng)意的技術(shù)人員,所以對于這些類型的公司,他們對人才的渴求也都不亞于同學(xué)們對工作崗位的渴求,若是聘到一個優(yōu)秀的技術(shù)人員對業(yè)務(wù)或項(xiàng)目的推進(jìn)將會使公司獲得更大的利益,或者使公司的發(fā)展少走彎路甚至能改變一個公司的命運(yùn)。相反,如果招不到合適的人才或者使用一個較差的技術(shù)人才,不但不能推進(jìn)項(xiàng)目的進(jìn)展,還要花費(fèi)幾個月的培養(yǎng)時間和費(fèi)用,甚至阻礙業(yè)務(wù)開拓甚至項(xiàng)目擱淺。所以當(dāng)同學(xué)們想得到一個工作崗位的同時,也要看到企業(yè)更需要一個優(yōu)秀的員工,二者是平等的。在面試時,同學(xué)們在一種非常平和的心態(tài)下,充分發(fā)揮,盡可能地展示自己已經(jīng)掌握的技能,展示學(xué)習(xí)能力和發(fā)展?jié)撃埽涣硪环矫嬉惨M可能地提前了解公司的背景和業(yè)務(wù)以及應(yīng)聘崗位的職能,從而加以辨別和選擇。一旦本次面試不能成功,表明要么崗位不適合你,要么你不適合崗位,或者因?yàn)槟惚敬蔚谋憩F(xiàn)不佳,這都是很正常的,一定不要有挫敗感,要及時總結(jié)面試時的表現(xiàn)方式以及溝通技巧,若感覺自己的確能夠勝任該崗位,只是因?yàn)樽约旱呐R場發(fā)揮不佳而沒有展示出自己的實(shí)際水平,也可及時和招聘公司聯(lián)系,經(jīng)詢問確認(rèn)對方?jīng)]有找到合適人選的情況下,表明誠意,請求復(fù)試機(jī)會??傊?,若本次失敗,一定不要影響下一次的面試,要積極總結(jié),為一下次面試作準(zhǔn)備。
正常運(yùn)營的公司因業(yè)務(wù)的不斷發(fā)展,人才需要不斷的更新、補(bǔ)充和儲備,所以他們一直都需要人才,況且公司每次組織招聘都會花費(fèi)一大筆費(fèi)用,也希望能夠找到合適的人才,所以公司面試時一般不會出太吊鉆的問題來為難你,同學(xué)們也不要過分擔(dān)心。
另一方面,同學(xué)們在堅(jiān)信“天生我才必有用”的同時,也要正確看待現(xiàn)在的就業(yè)形勢,對第一份工作也不要過于理想化,要擺正心態(tài),堅(jiān)持從基層做起,先就業(yè)再擇業(yè),職場上“騎驢找馬”也未必不是一種現(xiàn)實(shí)的理性選擇。
總之,面試是雙向性的,是招聘單位與同學(xué)們相互展示、相互認(rèn)識、互相挑選的一次溝通過程。同學(xué)們 在求職的過程中,要正確看待面試,放下思想包袱,充分重視,充分準(zhǔn)備,從容應(yīng)對。
軟件公司研發(fā)技術(shù)崗位掃描與崗位職責(zé)
一般中小型軟件公司設(shè)置的技術(shù)崗位有:研發(fā)總監(jiān)、項(xiàng)目經(jīng)理、需求分析人員、系統(tǒng)架構(gòu)與分析人員、數(shù)據(jù)庫設(shè)計(jì)人員、程序員、項(xiàng)目助理與文檔專員、測試人員、技術(shù)支持(售前/售后)、美工或網(wǎng)站前臺人員等,這些職位的工作聯(lián)系非常密切,根據(jù)公司規(guī)模的大小,以上職位可由一人或多人兼任,比如一個小型的軟件公司可能只有一個人完成軟件的總體設(shè)計(jì)、架構(gòu)、編碼、測試、文檔等工作。這些崗位的職責(zé)范圍大致是:
研發(fā)總監(jiān):全面負(fù)責(zé)研發(fā)及技術(shù)部門的整體工作。
項(xiàng)目經(jīng)理:在整個項(xiàng)目開發(fā)過程中組織項(xiàng)目所需的各項(xiàng)資源,對項(xiàng)目的范圍、項(xiàng)目的質(zhì)量、項(xiàng)目時間以及項(xiàng)目成本進(jìn)行管理與控制。根據(jù)項(xiàng)目范圍、質(zhì)量、時間與成本的綜合因素的考慮,進(jìn)行項(xiàng)目的總體規(guī)劃與階段計(jì)劃,保證項(xiàng)目組目標(biāo)明確且理解一致;在項(xiàng)目生命周期的各個階段,跟蹤、檢查項(xiàng)目組成員的工作質(zhì)量;保證項(xiàng)目在預(yù)算成本范圍內(nèi)按規(guī)定的質(zhì)量和進(jìn)度達(dá)到項(xiàng)目目標(biāo)。
需求分析人員:項(xiàng)目前期與客戶方打交道最多的人,對于客戶來說,他可以代表整個項(xiàng)目組,對于項(xiàng)目組成員來說他的意見可以代表客戶方的意見,項(xiàng)目組內(nèi)所有與客戶需求相關(guān)的事情必需得到他的認(rèn)可。他的工作主要是:
1、在項(xiàng)目前期根據(jù)《需求調(diào)研計(jì)劃》對客戶進(jìn)行需求調(diào)研。
2、收集整理客戶需求,負(fù)責(zé)編寫《用戶需求說明書》。
3、代表項(xiàng)目組與用戶溝通與項(xiàng)目需求有關(guān)的所有事項(xiàng)。
4、代表客戶與項(xiàng)目組成員溝通項(xiàng)目需求有關(guān)的所有事項(xiàng)。
5、負(fù)責(zé)《用戶需求說明書》得到用戶的認(rèn)可與簽字。
6、負(fù)責(zé)將完成的項(xiàng)目模塊給客戶做演示,并收集對完成模塊的意見。
7、完成《需求變更說明書》,并得到用戶的認(rèn)可與簽字。
8、協(xié)助項(xiàng)目組有關(guān)人員對需求進(jìn)行理解。
系統(tǒng)架構(gòu)與分析人員:是項(xiàng)目的總體設(shè)計(jì)師,組織構(gòu)建新產(chǎn)品的開發(fā)與集成、新技術(shù)體系等,也可以理解為技術(shù)總監(jiān)。是在技術(shù)上對所有重要事情做出決定的人。系統(tǒng)架構(gòu)在整個軟件開發(fā)過程中都起著非常重要的作用,并隨著開發(fā)進(jìn)程的推進(jìn)而其職責(zé)或關(guān)注點(diǎn)不斷地變化。
1、在需求階段,負(fù)責(zé)理解和管理非功能性系統(tǒng)需求,比如軟件的可維護(hù)性、性能、復(fù)用性、可靠性、有效性和可測試性等。審查客戶和市場人員所提出的需求,確認(rèn)開發(fā)團(tuán)隊(duì)所提出的設(shè)計(jì);組織開發(fā)團(tuán)隊(duì)成員和開發(fā)過程的定義;協(xié)助需求分析師完成《用戶需求說明書》、《需求變更說明書》等。
2、在設(shè)計(jì)階段,負(fù)責(zé)對整個軟件架構(gòu)、關(guān)鍵模塊、接口的設(shè)計(jì)。對系統(tǒng)進(jìn)行分析與建模,完成《系統(tǒng)架構(gòu)說明書》、《系統(tǒng)概要設(shè)計(jì)說明書》、《系統(tǒng)詳細(xì)設(shè)計(jì)說明書》。
3、編碼階段,成為程序員的顧問,負(fù)責(zé)重點(diǎn)代碼檢查,并且經(jīng)常性地要舉行一些技術(shù)研討會、技術(shù)培訓(xùn)班等;
4、測試及實(shí)施階段,隨著軟件開始測試、集成和交付,集成和測試支持將成為工作重點(diǎn);
數(shù)據(jù)庫設(shè)計(jì)人員:根據(jù)《系統(tǒng)架構(gòu)說明書》負(fù)責(zé)進(jìn)行數(shù)據(jù)庫選型與建模。由于數(shù)據(jù)庫是整個系統(tǒng)運(yùn)行的核心,數(shù)據(jù)庫設(shè)計(jì)的好差直接影響著整個系統(tǒng)的開發(fā)效率和系統(tǒng)運(yùn)行的優(yōu)劣。他是項(xiàng)目組中唯一能對數(shù)據(jù)庫進(jìn)行直接操作的人,對數(shù)據(jù)庫結(jié)構(gòu)的每一次改動都要得到他的認(rèn)可。主要職責(zé):
1、根據(jù)數(shù)據(jù)庫建模結(jié)果,繪制數(shù)據(jù)庫關(guān)系圖。進(jìn)行數(shù)據(jù)庫建庫以及數(shù)據(jù)庫進(jìn)行初始化操作。
2、對數(shù)據(jù)庫進(jìn)行維護(hù)、備份、恢復(fù)、同步。
3、負(fù)責(zé)客戶數(shù)據(jù)的導(dǎo)入導(dǎo)出。
4、根據(jù)《系統(tǒng)詳細(xì)設(shè)計(jì)說明書》編寫對應(yīng)的視圖、存儲過程、函數(shù)、觸發(fā)器等。
5、對項(xiàng)目組其它成員進(jìn)行SQL方面的指導(dǎo)。
6、為測試建立相關(guān)測試數(shù)據(jù)。
程序員:負(fù)責(zé)系統(tǒng)的最終代碼實(shí)現(xiàn)。主要職責(zé):
1、參與需求調(diào)研、項(xiàng)目可行性分析、技術(shù)可行性分析和需求分析。
2、協(xié)助完成《系統(tǒng)詳細(xì)設(shè)計(jì)說明書》,并根據(jù)《系統(tǒng)詳細(xì)設(shè)計(jì)說明書》進(jìn)行編碼實(shí)現(xiàn);
3、對自己代碼進(jìn)行復(fù)查,并進(jìn)行簡單的測試。
4、撰寫相關(guān)技術(shù)實(shí)現(xiàn)或功能描述文檔。
5、負(fù)責(zé)向項(xiàng)目經(jīng)理及時反饋軟件開發(fā)中的情況,并根據(jù)實(shí)際情況提出改進(jìn)建議。
6、參與軟件開發(fā)和維護(hù)過程中重大技術(shù)問題的解決。
項(xiàng)目助理或文檔專員:協(xié)助項(xiàng)目經(jīng)理在項(xiàng)目日常管理和數(shù)據(jù)分析方面的工作,進(jìn)行與項(xiàng)目有關(guān)的協(xié)調(diào)工作,編寫項(xiàng)目進(jìn)度報表,參與組織項(xiàng)目協(xié)調(diào)會,組織項(xiàng)目非技術(shù)文檔的編寫、傳遞與歸檔,以及與市場人員或其他部門的日常溝通,協(xié)助項(xiàng)目資源協(xié)調(diào)工作。跟蹤項(xiàng)目進(jìn)展。項(xiàng)目或軟件包的打包、發(fā)布以及授權(quán)鎖的制作等工作。
測試員:負(fù)責(zé)實(shí)施軟件測試。測試是整個項(xiàng)目系統(tǒng)中非常重要的一個環(huán)節(jié),項(xiàng)目質(zhì)量的保證,他的主要工作就是找到項(xiàng)目中存在的不合理、不合格的部份,并要求項(xiàng)目其它成員按其給定的項(xiàng)目質(zhì)量完成項(xiàng)目。保證了系統(tǒng)功能實(shí)現(xiàn)是否與功能設(shè)計(jì)和需求定義一致。主要職責(zé):
1、根據(jù)軟件項(xiàng)目規(guī)范編寫測試計(jì)劃,設(shè)計(jì)測試數(shù)據(jù)和測試用例。
2、采用合適的測試方法實(shí)施軟件測試,形成各階段的測試報告,并對軟件問題進(jìn)行跟蹤分析和反饋,推動測試中發(fā)現(xiàn)問題及時合理地解決。
3、完成對產(chǎn)品的集成測試與系統(tǒng)測試,對產(chǎn)品的功能、性能及其他方面的測試負(fù)責(zé)。
4、協(xié)助程序員進(jìn)行軟件代碼檢查,提出對軟件的進(jìn)一步改進(jìn)的要求。
技術(shù)支持人員:主要負(fù)責(zé)軟件產(chǎn)品或項(xiàng)目在技術(shù)層面上與客戶的交流,根據(jù)工作重點(diǎn)分為售前支持和售后支持。
? 售前支持:是銷售人員和開發(fā)人員的橋梁,協(xié)調(diào)銷售人員、用戶、開發(fā)人員的關(guān)系,制作產(chǎn)品功能演示PPT文檔或多媒體資料,將公司的技術(shù)實(shí)力向用戶展示,技術(shù)標(biāo)書的撰寫,定期采集、分析和整理用戶的需求,配合銷售制訂產(chǎn)品銷售策略,從技術(shù)上支持市場銷售業(yè)務(wù)等。
? 售后支持:負(fù)責(zé)編寫《用戶手冊》、《操作手冊》,制作系統(tǒng)操作視頻教程等多媒體培訓(xùn)教材;負(fù)責(zé)系統(tǒng)實(shí)施(包括系統(tǒng)安裝、用戶培訓(xùn)、系統(tǒng)試運(yùn)行等),協(xié)助用戶進(jìn)行“用戶確認(rèn)測試”和編寫《確認(rèn)測試報告》;通過電話、網(wǎng)絡(luò)、及時通訊等多種渠道解答用戶在使用中的問題,提供售后服務(wù)。收集、整理用戶的建議等。
美工或網(wǎng)站前臺人員:負(fù)責(zé)完成軟件設(shè)計(jì)師安排的功能界面設(shè)計(jì)和簡單網(wǎng)站的設(shè)計(jì)。
1、負(fù)責(zé)對項(xiàng)目整體色彩的調(diào)配。
2、向系統(tǒng)分析師提出項(xiàng)目美化的建議。
3、為BS 項(xiàng)目提供一套或幾套CSS樣式表及HTML結(jié)構(gòu)表
4、為CS項(xiàng)目提供符合項(xiàng)目內(nèi)容的靜態(tài)、動態(tài)圖片。
5、并為程序員提供界面指導(dǎo)。
如何快速融入技術(shù)團(tuán)隊(duì)
——程序員入崗的注意事項(xiàng)
同學(xué)們剛剛結(jié)束學(xué)校的集體生活,面對新的工作環(huán)境、新領(lǐng)導(dǎo)、新同事、新任務(wù)、新的制度、新的生活節(jié)奏,很多的變化需要你盡快適應(yīng),很多的事情需要你獨(dú)擋一面,而又有許多事情需要你與同事通力協(xié)作來完成…… 以下是新程序員入職后盡快融入技術(shù)團(tuán)隊(duì)?wèi)?yīng)注意的事項(xiàng):
1、認(rèn)真學(xué)習(xí)公司的發(fā)展背景與歷程、主營業(yè)務(wù)以及規(guī)章制度。
進(jìn)入公司前可能對公司已經(jīng)有了一些了解,入職后,相關(guān)人力資源管理部門會組織培訓(xùn),解讀公司文化,介紹公司發(fā)展背景、主要職能部門以及主要業(yè)務(wù)特點(diǎn),學(xué)習(xí)公司考勤、人事、辦公等管理規(guī)定和規(guī)章制度。有些新入職的程序員或技術(shù)人員,認(rèn)為這些不含技術(shù)成分沒有必要花精力去學(xué)習(xí),其實(shí)這種認(rèn)識是錯誤的,公司文化及各種制度是整個公司的靈魂,是公司正常經(jīng)營活動保障和員工行為的一種約定,新職員只有對公司的發(fā)展背景和經(jīng)營狀態(tài)有充分的了解,接受公司文化,高度認(rèn)同公司的核心價值觀,嚴(yán)格遵守各種規(guī)章制度,才能自覺地規(guī)范自己的行為習(xí)慣,在工作學(xué)習(xí)中才有主動性,遇到工作壓力時也能坦然地接受,不會有抵觸心理,從而能更快地推動自己的工作。
2、積極學(xué)習(xí)業(yè)務(wù)知識、類庫及現(xiàn)有程序資源,把握學(xué)習(xí)的技術(shù)方向。
程序員入職后,若有一個成熟的開發(fā)團(tuán)隊(duì),一般都會有一個老職員來帶領(lǐng)學(xué)習(xí),這一階段主要有三個方面的學(xué)習(xí)任務(wù),第一是公司業(yè)務(wù)知識,因?yàn)槌绦騿T只有對業(yè)務(wù)知識熟悉了,才能更好的理解和把握功能需求,比如做通信方面的軟件,你要學(xué)習(xí)一些通信行業(yè)知識;若做財(cái)務(wù)軟件,你要了解一些財(cái)務(wù)知識。第二,現(xiàn)有的類庫是公司開發(fā)部門積累的程序資源,學(xué)習(xí)和使用它可以規(guī)范統(tǒng)一程序的風(fēng)格,提高開發(fā)的速度,掌握并能使用這些資源,可使你盡快與老職員有程序上的共同語言。第三,學(xué)習(xí)并加強(qiáng)在此領(lǐng)域的編程技能,因?yàn)樵趯W(xué)校學(xué)習(xí)的是通用的知識,掌握的是一種知識導(dǎo)入與學(xué)習(xí)的方法,那么在公司應(yīng)用方面也許要求你某一個方面很精通,比如網(wǎng)站的前臺、數(shù)據(jù)庫、圖形處理、多媒體、網(wǎng)絡(luò)編程等某些方面的技能需要強(qiáng)化。案例:
小張(男)和小胡(女)是同一個大學(xué)畢業(yè)的應(yīng)屆生,在2005年4月份同時進(jìn)入公司做技術(shù)支持,當(dāng)時兩人的工資都是每月1500元,而兩年后的今天小胡已是研發(fā)部的一個程序員,工資是每月4300元,而且是公司重點(diǎn)培養(yǎng)的對象之一。小張現(xiàn)在還是在做技術(shù)支持,工資是每月2600元,他們兩人可以說是起點(diǎn)相同,但兩年的發(fā)展卻讓他們有了明顯的差距,小胡比較愛學(xué)習(xí),工作非常踏實(shí),對業(yè)務(wù)知識也掌握得非常精通,而且在做技術(shù)支持工作的時候,業(yè)余時間學(xué)習(xí)編程,由于做技術(shù)支持與程序員交流比較多,小胡抓住了這個學(xué)習(xí)編程的機(jī)會,但她從不在公司上班時間學(xué)習(xí)程序,在做技術(shù)支持工作時,她上班時間鉆研業(yè)務(wù)知識、軟件需求、學(xué)習(xí)程序?qū)崿F(xiàn)的思想,業(yè)余時間練習(xí)代碼。在做技術(shù)支持一年后,她通過了研發(fā)部的考核,進(jìn)入研發(fā)部開始做編程。而小張與她對比就不同了,他只是做好本質(zhì)工作,沒有潛心學(xué)習(xí),對業(yè)務(wù)知識、軟件知識只是一般了解,工作上很業(yè)績平平,總體上不出色也沒出大的差錯。工資漲得當(dāng)然也慢,小張和小胡的起點(diǎn)相同,但小胡比較主動學(xué)習(xí),很明顯他們兩個在職場上的差距就拉開了。
3、展示進(jìn)步,創(chuàng)新思考,體現(xiàn)價值。
入職之初,通過積極的學(xué)習(xí)與適應(yīng),應(yīng)該說進(jìn)步是非??斓模皶r的總結(jié),并把工作學(xué)習(xí)的總結(jié)和進(jìn)步程度及時向主管匯報(口頭、郵件、書面),階段工作總結(jié)應(yīng)包括以下幾點(diǎn):已經(jīng)完成的工作、技術(shù)上的進(jìn)步、業(yè)務(wù)上的進(jìn)步、從學(xué)生到職員心態(tài)上的轉(zhuǎn)變、八小時之外的學(xué)習(xí)狀態(tài)等。這樣一方面可以疏理一下知識結(jié)構(gòu),把握自己的學(xué)習(xí)階段,一方面讓主管根據(jù)你的知識結(jié)構(gòu)和技能狀態(tài)有針對性地給你分配合適的任務(wù)。
另外在工作當(dāng)中也要注重思考,對工作進(jìn)行適當(dāng)?shù)母倪M(jìn),并提出改進(jìn)意見,這樣能更快是體現(xiàn)出你的進(jìn)步和工作價值。
4、積極參加團(tuán)隊(duì)活動,適應(yīng)團(tuán)隊(duì)文化,創(chuàng)造與團(tuán)隊(duì)成員友好而積極的協(xié)作氛圍。
能盡快適應(yīng)團(tuán)隊(duì)文化,與同事友好溝通是任何崗位都需要的職業(yè)素質(zhì),只是在研發(fā)團(tuán)隊(duì)里要顯得尤為重要,由于研發(fā)工作的重要與特殊性,若在軟件商品化和產(chǎn)品化的開發(fā)階段,不良的溝通協(xié)作可能導(dǎo)致項(xiàng)目的流產(chǎn)。另外,部分程序員寫程序久了都會很注重與機(jī)器或代碼交流,有的不容易與新職員交流,有的他們因有大量的工作任務(wù)而顧不上,有的是因?yàn)樗麄冇刑嗟乃枷肱c創(chuàng)意,和一個新來的職員沒有共同語言,有的是人為設(shè)置“技術(shù)壁壘”(因擔(dān)心新職員威脅到自己的崗位,而不愿傳授一些知識)。那么新職員一定不要因?yàn)樗麄儧]有主動與你交流而放棄交流,或者認(rèn)為自己被冷落而與逐漸遠(yuǎn)離團(tuán)隊(duì),而是要在適當(dāng)?shù)臅r間與他們主動交流,主動向他們請教,積極參加團(tuán)隊(duì)的集體活動,創(chuàng)造與同事交流合作的良好氛圍。要盡可能地為團(tuán)隊(duì)多做貢獻(xiàn),不要因?yàn)槎喔梢恍┕ぷ骰蚨嗉右稽c(diǎn)班,就有不良的情緒,從而影響正常的溝通與交流。另外,在研發(fā)團(tuán)隊(duì)里的溝通與協(xié)作,還體現(xiàn)在代碼上,自己設(shè)計(jì)的功能模塊是否能為別人提供良好的說明和程序接口??傊?,與同事友好愉快的協(xié)作,盡快融入研發(fā)團(tuán)隊(duì),是新入職的程序員技術(shù)快速進(jìn)步和穩(wěn)定職位的重要因素。
5、正確面對工作壓力,學(xué)會釋放“厭職”情緒。
許多同學(xué)進(jìn)入一個新的工作環(huán)境,面對的是很多新事物,感覺工作節(jié)奏太快,工作壓力太大。其實(shí)新職員有工作壓力也是正常的,從職業(yè)生涯發(fā)展的角度來看,這種工作壓力是非常必要的。同學(xué)們在進(jìn)入公司后,要勇于接受工作壓力,把這種壓力作為進(jìn)入初職鍛煉的良好機(jī)會,樹立良好的心態(tài),不要逃避,更不要產(chǎn)生“厭職”情緒,公司還正在培養(yǎng)你,你卻選擇退縮而自炒“魷魚”。工作中要學(xué)會積極與同學(xué)溝通,注意工作方法,釋放和減輕壓力。其實(shí)我發(fā)現(xiàn)一些新職員說工作壓力大,做事不順心,仔細(xì)分析之后可以發(fā)現(xiàn)他們感覺的工作壓力大與“不合群”有很大的關(guān)系。有些同學(xué)到公司后,一坐下就是八小時,語言和行為與同事格格不入導(dǎo)致他不敢言語不敢行動,下班時間到了,其實(shí)他不是工作學(xué)習(xí)本身的累,他們感到更累的是“心”。這些新職員在工作中總是希望別人主動接近自己,自己卻不會主動與人交流,時間長了,同事覺得他“不愛說話”,也就逐漸放棄了與他的交往,這時他又會感到被排擠,感到孤獨(dú),心理壓力就會增大。另外技術(shù)上單打獨(dú)斗,不能利用別人的資源,因此完成相同的工作,付出的努力和壓力就要比其他同事大得多。所以新職員在入職之初,一定要正確看待工作上正常的工作壓力,學(xué)會與團(tuán)隊(duì)成員友好相處,創(chuàng)造一種“如魚得水”的工作氛圍,那么真正技術(shù)上的壓力都不會成為問題的。
如果公司還沒有成熟的開發(fā)團(tuán)隊(duì),需要你一個人承擔(dān)開發(fā)項(xiàng)目,著手組建開發(fā)團(tuán)隊(duì),那么就要求你充分一切時間,利用網(wǎng)絡(luò)資源,有技術(shù)難點(diǎn)及時到網(wǎng)絡(luò)上尋求幫助,同時與相關(guān)部門人員密切合作,保持動態(tài)及時的溝通,及時報告工作進(jìn)度,爭取盡快擬出解決方案或產(chǎn)品。
優(yōu)秀程序員應(yīng)具有的品質(zhì)與習(xí)慣
? 善于理解與把握需求
程序員的勞動成果就是滿足需求的程序,那么在動手寫代碼之前,只有完整地理解一個模塊的需求才能做出好的程序,優(yōu)秀的程序員在分析需求的基礎(chǔ)上,應(yīng)該能抓住問題的關(guān)鍵技術(shù),從而能夠建立合適的數(shù)據(jù)模型,盡量在代碼中少走“彎路”。? 善于學(xué)習(xí)與總結(jié)
當(dāng)然善于學(xué)習(xí),是對任何行業(yè)任何職業(yè)的最根本的要求,對于程序員,這種要求就更加高了。其實(shí)研發(fā)部門招聘程序員,其實(shí)并不一定注重你現(xiàn)在能做什么,而更注重的是你的學(xué)習(xí)能力、你的編程潛力,因?yàn)槌绦騿T是很容易被淘汰,很容易落伍的職業(yè),一種技術(shù)可能僅僅在三兩年內(nèi)具有領(lǐng)先性,若你不能跟進(jìn)新的技術(shù),不學(xué)習(xí)新的技能,那么不斷出現(xiàn)的新技術(shù)會使你顯得非常笨拙。善于總結(jié),也是學(xué)習(xí)能力的一種體現(xiàn),每次完成一個研發(fā)任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況和用戶反饋,隨時總結(jié),找到自己的不足,這樣逐步提高,才能成長起來。
? 規(guī)范化的編碼習(xí)慣
養(yǎng)成良好的編碼習(xí)慣,比如:變量命名清晰,語句嵌套明確,函數(shù)具有獨(dú)立功能,適當(dāng)注釋等等,因?yàn)檫@些不但有助于代碼的移植和糾錯,也有助于不同人員之間的協(xié)作。? 良好的文檔習(xí)慣
良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時間寫技術(shù)文檔是很正常的,而作為高級程序員和系統(tǒng)分析員,這個比例還要高很多。缺乏文檔,一個軟件系統(tǒng)就缺乏生命力,在未來的查錯,升級以及模塊的復(fù)用時就都會遇到極大的麻煩。? 代碼復(fù)用性,模塊化思維能力
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個功能模塊或函數(shù)的時候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡單思路上,想想看該模塊是否可以脫離這個系統(tǒng)存在,是否可以通過簡單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開發(fā)工作,如果一個軟件研發(fā)單位和工作組能夠在每一次研發(fā)過程中都考慮到這些問題,那么程序員就不會在重復(fù)性的工作中耽誤太多時間,就會有更多時間和精力投入到創(chuàng)新的代碼工作中去。? 團(tuán)隊(duì)精神與溝通協(xié)作能力
這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。軟件或項(xiàng)目的各模塊功能需求的理解準(zhǔn)確,一個功能實(shí)現(xiàn)的修定,是否會影響其他模塊等,沒有充分及時的協(xié)作對一個項(xiàng)目來說幾乎是不可想象的。我做了幾年開發(fā),感覺溝通真的太重要了,其實(shí)軟件研發(fā)過程中最重要的不是技術(shù)問題,而是管理中的溝通問題,比如初級程序員或許是礙于面子或其他原因,不懂的問題也不想問,總是把問題掖著藏著,而高級程序員又不理解初級程序員的開發(fā)任務(wù)總是完不成,其實(shí)可能是高級程序員不了解初級程序員的真正困難,或者沒有把要實(shí)現(xiàn)的邏輯和思路講解清楚。合作起來總會有一些不透徹,要么一個問題討論多次依然是問題沒有結(jié)果,要么是有些問題根本不反映,大家都掖著藏著,報喜不報憂,待到問題暴露已無法挽回,嚴(yán)重的阻礙了項(xiàng)目的進(jìn)度。所以我最好的建議就是,高級程序員應(yīng)該把問題講到明白為止,初級程序員應(yīng)該把問題問到明白為止,并且不僅僅是口頭上講明白、聽明白,還一定要形成文字,現(xiàn)在網(wǎng)絡(luò)非常方便,公司都會有企業(yè)郵箱,把問題的討論過程通過mail的形式記錄保存,明確確認(rèn),這樣障礙才能去除,項(xiàng)目才能得以順利進(jìn)展。
案例1:
陳某是北京某重點(diǎn)大學(xué)自動化專業(yè)的畢業(yè)生,編程基礎(chǔ)知識非常扎實(shí),在學(xué)校學(xué)習(xí)期間也有許多代碼積累,從技術(shù)上說應(yīng)該是很有潛力的,但他性格有點(diǎn)孤僻,不太容易與同事溝通,當(dāng)時錄用他時公司是看在他的編程基礎(chǔ)很好,以為在研發(fā)部大家多帶動他,應(yīng)該會好些的。進(jìn)公司有兩個多月了,一次在做某油田項(xiàng)目中負(fù)責(zé)其中一個小模塊的開發(fā),在開發(fā)過程中我經(jīng)常詢問他有沒什么問題,他每次都有些含糊地說沒有??僧?dāng)項(xiàng)目交付的時候,發(fā)現(xiàn)他做的某一功能與當(dāng)初功能定義不符,客戶就抓住這一點(diǎn)說與合同中需求描述不符,由此延期支付28萬的余款,使該項(xiàng)目后期維護(hù)起來非常被動。而導(dǎo)致這一結(jié)果就是陳某在做程序時有問題自己繞過去了,沒有及時與項(xiàng)目組成員交流,而獨(dú)自采用了他熟悉的一種解決辦法。項(xiàng)目匯報會剛結(jié)束,人事部門就通知陳某交接工作,到財(cái)務(wù)結(jié)算工資…..文摘:下面這故事《請按一下九層》我一直和我的同事們分享。是《讀者》中的一篇文章: 這是全市最忙的一部電梯,上下班高峰時期,和公共汽車差不多,人挨著人。上電梯前和公司的人力資源總監(jiān)相遇,說笑間,電梯來了,我們隨人群一擁而進(jìn)。每個人轉(zhuǎn)轉(zhuǎn)身子,做一小小的調(diào)整,找到了一種相對融洽的關(guān)系。這時,一只胳膊從人逢中穿過來,出現(xiàn)在我的鼻子前頭。我扭頭望去,一個小伙子隔著好幾個人,伸手企圖按電鈕。他夠得很辛苦,好幾個人剛剛站踏實(shí)的身子不得不前挺后撅,發(fā)生了一陣小小的騷動。
那個人力資源總監(jiān)問道:“你要去哪一層?”“九層?!庇腥颂鹨粋€手指頭立刻幫他按好了。沒有謝謝。
下午在樓道里又碰到那個人力資源總監(jiān)。“還記得早上電梯里那個要去九層的小伙子嗎?”她問我。
“記得呀,是來應(yīng)聘的吧?”九層,人力資源部所在地。“沒錯,挺好的小伙子,可我沒要他?!薄盀槭裁矗俊?/p>
“缺少合作精神?!彼冻鲆桓睂I(yè)HR的神情,“開口請求正當(dāng)?shù)膸椭鷮λ麃碚f是件很困難的事情,得到幫助也不懂得感激。這種人很難讓別人與他合作。”
我點(diǎn)頭稱是。如果那個小伙子坦然而自信地說一句“請按一下九層”,結(jié)果會怎樣呢?大家不但不會反感他的打擾,而且?guī)椭娜诉€會心生助人的快樂,最后他也能得到想要的工作。
這個故事表明,良好溝通不僅僅體現(xiàn)在禮貌地說聲“請”、“謝謝”,而是一個職員能夠創(chuàng)造愉快、高效、和諧工作氛圍的素質(zhì)和習(xí)慣。
? 時刻修定自己的認(rèn)識和行為與公司的核心價值觀(短期目標(biāo)、長期目標(biāo))保持一致
公司或研發(fā)團(tuán)隊(duì)在什么時段做什么樣的項(xiàng)目,或者根據(jù)項(xiàng)目進(jìn)度的計(jì)劃,在什么時間做什么功能模塊,作為程序員要高度地與這些目標(biāo)保持一致,不要在關(guān)鍵時刻“掉鏈子”,這是最重要的。
案例:
小張是公司里的轉(zhuǎn)正不久的程序員,很聰明,對新技術(shù)接受很快,缺點(diǎn)就是非常的貪玩,對項(xiàng)目組的事缺乏主動性和責(zé)任心,平時的工作中主管已經(jīng)提醒過他多次要注意工作的責(zé)任心,但他都不太放在心上,對事依然是敷衍。一次在做上海鐵通的項(xiàng)目中,小張負(fù)責(zé)項(xiàng)目中的一個模塊,當(dāng)軟件架構(gòu)出來以后,需要出差上海為客戶現(xiàn)場演示和進(jìn)一步確認(rèn)需求,由于合同還沒有正式簽下來,所以此行的技術(shù)交流對公司能不能簽下這個項(xiàng)目至關(guān)重要,公司派由我和小張?jiān)趦?nèi)的項(xiàng)目組4人出差上海,臨行前我們多次開會研究方案,確保拿下這個項(xiàng)目,下午到了上海之后約好第二天上午與客戶見面,正當(dāng)大家為第二天的交流捏一把汗,積極準(zhǔn)備的時候,小張卻說是第一次到上海,要求先去外灘看夜景,在得到項(xiàng)目組的否定之后,小張竟一個人偷偷到外灘看夜景至到深夜才回到賓館。第二天的技術(shù)交流會上,小張負(fù)責(zé)的模塊問題最多,雖然最后整個項(xiàng)目的交流還算成功,公司總算簽下了這個項(xiàng)目,但小張也被辭退了。原因很簡單,小張一直沒有把公司的事放在心上,項(xiàng)目組出差第一目標(biāo)是與客戶交流好,拿下項(xiàng)目,而小張出差上海的第一目標(biāo)是看一下外灘。所以象小張這樣的技術(shù)上不管有多么出色,但總在公司的關(guān)鍵時刻“掉鏈子”,被公司辭退也是早晚的事。就在寫此案例的前幾天,在地鐵上我偶遇小張,談話中得知他被辭退后半年內(nèi)又經(jīng)歷了一家公司。而此刻他又在匆匆地找工作。
談?wù)剬W(xué)習(xí)方法
說起學(xué)習(xí)的方法,其實(shí)每個人都有自己的學(xué)習(xí)方法,也許這種方法對我來說有用,但不見得就對所有的人有用。所以,不要盲目的跟著別人的學(xué)習(xí)方法學(xué)習(xí),要思考屬于自己的學(xué)習(xí)方法。但以下幾個原則是要遵守的: ? 堅(jiān)持學(xué)習(xí)。首先要有毅力,對編程的狂熱也可以在一定程度上起到幫助。學(xué)習(xí)編程應(yīng)該說要經(jīng)歷好奇——困難——容易——郁悶——成就感——困惑——輕松的幾個階段的循回,不管哪個階段都需要天天學(xué)習(xí),堅(jiān)持每天都要進(jìn)步,不能半途而廢,培養(yǎng)一種堅(jiān)持克服困難的毅力。案例: 記得開發(fā)團(tuán)隊(duì)里有一個基礎(chǔ)不是太好的程序員,剛?cè)肼殐蓚€多月,表現(xiàn)一般,有一天早上他眉飛色舞地在講述昨天電視中的一個情節(jié),我聽到后就說了一句:“你還好意思說你看電視?”。他立刻明白了,就沒說什么。從此他的進(jìn)步是可以說是突飛猛進(jìn)的,代碼的質(zhì)量和工作效率明顯上了一個臺階,對項(xiàng)目的推動也是有目共睹的。幾個月后的一次公司慶典上,他被評為“進(jìn)步最快員工獎”,獎金3000元。獎后在他給我的Mail中發(fā)現(xiàn)了這句話:“你說我看電視的那句話改變了我的學(xué)習(xí)狀態(tài)….我現(xiàn)在是馬桶上、公交車上都在看書或筆記。”
? 堅(jiān)持實(shí)踐。當(dāng)你學(xué)到了一種新的技術(shù)或知識時,多實(shí)踐是鞏固學(xué)習(xí)的一種最好最有效的方法。這個實(shí)踐不是照著書上的例子做一遍,而是根據(jù)自己的能力,給自己出題,然后去完成它。只有這樣,你才能發(fā)現(xiàn)自己的不足,同時又增加了編程經(jīng)驗(yàn)。要成為合格的程序員,光會寫代碼是遠(yuǎn)遠(yuǎn)不夠的,更重要的是在實(shí)踐中思考創(chuàng)新。實(shí)踐的多少決定著“高手”和一般程序員界線,高手們并不是天才,他們是在無數(shù)個日日夜夜中磨煉出來的。成功能給我們帶來無比的喜悅,但實(shí)踐的過程卻是無比的枯燥乏味。
? 掌握編程思想。學(xué)一門語言,不能僅僅是語言,還要注重語言背后的思想方法,獲得提出問題,分析問題,解決問題的能力,不是為編程而學(xué)習(xí),因?yàn)榫幊陶Z言和我們?nèi)粘Kf的語言一樣,日常所說的語言是一種思想的表達(dá),而編程語言是一種功能的實(shí)現(xiàn)。要學(xué)習(xí)它是如何來解決某一問題的,為什么要這樣去做,他總是要符合客觀事實(shí)的,存在某種邏輯,數(shù)據(jù)的組織,信息的傳遞,然后看該怎么樣用編程語言來表達(dá)自己的想法。
? 多問、多總結(jié)、多記筆記?!叭诵斜赜形?guī)煛保苍S在一次和別人不經(jīng)意的談話中,就可以迸出靈感的火花。著名的交換蘋果理論說的是:“你有一個蘋果,我有一個蘋果,當(dāng)我們互相交換蘋果后,我們?nèi)匀换サ靡粋€蘋果;你有一個想法,我有一個想法,當(dāng)我們互相交換想法,我們則互得兩個想法”。遇到問題,上網(wǎng)查看一些技術(shù)論壇,看看別人對同一問題的看法,會給你很大的啟發(fā)。在這個網(wǎng)絡(luò)時代,資料到處都有,無論什么先進(jìn)的技術(shù),你可以問身邊的高手,問網(wǎng)上的同仁,只要查到資料,快的學(xué)上幾天慢的一兩個月也能學(xué)會,學(xué)會后總結(jié)出技術(shù)要點(diǎn)記下來,可寫在本子上也可寫在Blog上,編程技能的提高靠的是代碼的積累,把所有自己的代碼保存起來,并附有適當(dāng)?shù)墓P記,這樣,到用到時才能信手拈來,才能獲得踏踏實(shí)實(shí)的進(jìn)步。所以現(xiàn)在已沒有寫不出的程序了,寫不出不是因?yàn)椴粔蚵斆鳎且驗(yàn)槟銢]有耐心和找 BUG 的細(xì)心。
? 不鉆“牛角尖”,只抓主要問題,一些不影響工作的難點(diǎn)只要會用就行,這也體現(xiàn)了OOP的思想,你只要知道一個技術(shù)能完成什么功能就可以,至于它是如何實(shí)現(xiàn)的可暫時放一放,有時回過頭來再看就不是什么難點(diǎn)了。當(dāng)你遇到技術(shù)障礙的時候,不妨?xí)簳r遠(yuǎn)離電腦,看看窗外的風(fēng)景,聽聽輕音樂,和朋友聊聊天。當(dāng)重新開始工作的時候,我會發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
外包軟件、商品軟件、項(xiàng)目軟件的操作模式簡介
軟件外包
就是一些發(fā)達(dá)國家的軟件公司將他們的一些非核心的軟件項(xiàng)目通過外包的形式交給人力資源成本相對較低的國家的公司開發(fā),以達(dá)到降低軟件開發(fā)成本的目的。因?yàn)檐浖_發(fā)的成本中70%是人力資源成本,所以,降低人力資源成本將有效地降低軟件開發(fā)的成本。軟件外包已經(jīng)成為發(fā)達(dá)國家的軟件公司降低成本的一種重要的手段。軟件外包的大幅度增長為人力資源成本相對較低的印度和中國帶來了新的發(fā)展機(jī)會。企業(yè)與企業(yè)之間的外包就是:企業(yè)(A)為了專注核心競爭力業(yè)務(wù)和降低軟件項(xiàng)目成本,將軟件項(xiàng)目中的全部或部分工作發(fā)包給提供企業(yè)(B)完成; 商業(yè)軟件 商業(yè)軟件(又叫“商品軟件”)就是由商業(yè)公司在調(diào)研大多數(shù)行業(yè)用戶的需求上開發(fā)的軟件,該軟件基本上能滿足這些用戶的需求,而且它的功能不會因個別或少數(shù)用戶的要求而改動。隨著互聯(lián)網(wǎng)的興起和軟件授權(quán)銷售方式的普及,商品軟件的銷售可軟件公司直銷、代理銷售、專業(yè)下載網(wǎng)站銷售等多種渠道,軟件授權(quán)許可的銷售模式往往是根據(jù)使用商品軟件的用戶數(shù)和安裝該軟件的計(jì)算機(jī)數(shù)來收取許可費(fèi)用。項(xiàng)目軟件 就是軟件公司專門為某個客戶開發(fā)的軟件系統(tǒng),該系統(tǒng)由委托開發(fā)的客戶配合調(diào)研需求,“量體裁衣”,在關(guān)鍵階段雙方可派技術(shù)人員互相“滲透”,密切合作,共同完成系統(tǒng)的開發(fā)和實(shí)施以及運(yùn)行。項(xiàng)目軟件與外包軟件的操作模式有相同性也有不同性。產(chǎn)品經(jīng)理與項(xiàng)目經(jīng)理
簡單地說,產(chǎn)品經(jīng)理是做正確的事,其所領(lǐng)導(dǎo)的產(chǎn)品是否符合市場的需求,是否能給公司帶來利潤的。而項(xiàng)目經(jīng)理是把事情做正確,把事情作得完美,在時間,成本和資源約束的條件下完成目標(biāo)。項(xiàng)目經(jīng)理要對某個產(chǎn)品進(jìn)行開發(fā)的管理,負(fù)責(zé)開發(fā)的進(jìn)度,開發(fā)過程中的協(xié)調(diào)等有關(guān)開發(fā)方面的問題,他最大的目標(biāo)是時間第一、立項(xiàng)目標(biāo)達(dá)成第一。并不會很尊重產(chǎn)品本身的市場需求以及業(yè)務(wù)邏輯的問題。
而產(chǎn)品經(jīng)理是橫向管理的,也就是說他將負(fù)責(zé)某個產(chǎn)品或者某個產(chǎn)品線從商業(yè)計(jì)劃市場競爭開發(fā)需求推廣方案渠道策略等各個方面。產(chǎn)品經(jīng)理一個產(chǎn)品線從頭到尾的重要參與人。
第五篇:intel筆試題
intel筆試真題一:
intel筆試共10題,1個小時,前6題智力題,第7題為設(shè)計(jì)一個高效率的內(nèi)存管理,第9題關(guān)于intel的一段中文描述寫出150~200字的英 文摘要,第10題寫出150~200字關(guān)于你在5~10年內(nèi)對IT的一些看法和自身的發(fā)展。下面列舉這次intel筆試精華:
intel筆試(1)編譯中的問題:全局變量如int i=5;int*(pf)()=foo;分別在何時被初始化?設(shè)計(jì)時候如何具體的實(shí)現(xiàn)。
intel筆試(2)OS相關(guān)的問題,內(nèi)存訪問,cache等(包括cache在整個系統(tǒng)中的位置,畫出來,并解釋)
intel筆試(3)解釋例如mov ax,100H 這樣一條指令的cpu, os, memory等都完成了什么樣的工作。
intel筆試(4)Strlen()的C語言實(shí)現(xiàn),不能使用任何變量。
intel筆試(5)編譯中display表的一些問題
intel筆試(6)一個hash函數(shù),輸入隨機(jī),現(xiàn)發(fā)生沖突,如數(shù)據(jù)集中在某幾條中,問怎樣處理hash函數(shù)保證高效的訪問,怎樣實(shí)現(xiàn)?
intel筆試(7)把Switch()case…語句翻譯成三元組。
intel筆試(8)一個byte(用C語言實(shí)現(xiàn)計(jì)數(shù)其中1的個數(shù)),給出最高效的實(shí)現(xiàn)方法。
intel筆試(9)上海有多少個加油站?你是怎樣解決這一問題?
intel筆試(10)C語言參數(shù)的入棧順序?為什么這么實(shí)現(xiàn)?
intel筆試(11)C語言中字符串的翻轉(zhuǎn),最高效率(時間和空間)的實(shí)現(xiàn)?
intel筆試(12)你的最大的優(yōu)點(diǎn)和缺點(diǎn)分別是什么?
intel筆試(13)你解決問題和分析問題的能力如何?請給出一個具體的例子來證明你的這種能力?
intel筆試總結(jié):編譯原理、操作系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)知識比較重要,感觸頗深,自己的基礎(chǔ)不夠扎實(shí),一些問題沒有很好的答出來,或者解釋的不對,各位同學(xué)努力吧~
intel筆試真題二:
intel筆試1:概率題。x,y為隨機(jī)變量,聯(lián)合概率密度 f(x,y)= intig(0,1)*dx*intig(0,x)*k*d
y,k為常數(shù),求k=? E(xy)=?注:intig(a,b)為a到b的定積分。
intel筆試2:概率題。A,B為隨機(jī)事件,以下哪個正確
A.P(A U B)*p(AB)<= P(A)P(B)
B.P(A U B)*p(AB)>= P(A)P(B)
C.P(A U B)*p(AB)<= P(A)P(B)
D.P(A U B)*p(AB)>= P(A)P(B)
intel筆試3: 信道帶寬200kHz,信噪比10dB,求信道波特率=?
intel筆試4:以下代碼運(yùn)行結(jié)果是什么int main(){int a,b,c,abc = 0;a=b=c=40;if(c){int abc;abc = a*b c;}printf(“%d,%d”, abc, c);return 0;}
intel筆試5:給出了從紐約出發(fā)和到達(dá)落山雞的各種航班信息,寫出找到一條從紐約到落山雞的最短距離的航班組合的代碼。
intel筆試6:從計(jì)算機(jī)圖形上截取某個物體邊緣的若干個坐標(biāo),求這個物體面積,并跟判斷是方形還是圓形,為啥。(坐標(biāo)不記得,大概是個圓)。
intel筆試7:離散卷機(jī)與DFT的區(qū)別與關(guān)系??焖偾蟛粷M足2^N長度的離散傅立葉變換的方法有哪些 ?如何用fft求N*M點(diǎn)的離散卷機(jī)?
intel筆試8:給出fir和iir的優(yōu)缺點(diǎn)。
intel筆試9:如何計(jì)算線性標(biāo)量量化器的量化噪聲?需要那些假設(shè)?
intel筆試真題三:
向大家介紹intel筆試分三部分,第一部分考IQ,第二部分考編程,第三部分考英語論文!
第一部分 智力題 大概5,6道
intel筆試1.有5*5表格中找規(guī)律填數(shù)字
intel筆試2.在3個飛標(biāo)得99分的投法,標(biāo)盤有數(shù)字
intel筆試3.三角形各角有數(shù)字,找規(guī)律填上最后一個三角形一角上的數(shù)字
intel筆試4.表格中有字母右面對應(yīng)數(shù)字,找到規(guī)律(其實(shí)就是字母表位置號)填上一個字母旁的數(shù)字
第二部分 技術(shù)題
intel筆試1 給出至少兩種方法實(shí)現(xiàn)系統(tǒng)存儲器管理 比如虛存 ……有點(diǎn)忘了
intel筆試2 程序?qū)崿F(xiàn)八個皇后問題(經(jīng)典數(shù)據(jù)結(jié)構(gòu)算法)覺得滿bt的第三部分 翻譯
intel筆試1.給一段300字icsc的介紹性e文,寫sunmmary
intel筆試2.寫短文表達(dá)一下如何contribute ICSC
感覺intel筆試?yán)怀鍪裁礄n次,不過考試1個小時時間很緊,基本功需要扎實(shí)