A. 對程序員來說最難的是寫代碼嗎
謝邀。我是一名Java後台開發,還是一名工作沒多久的「碼農」。寫代碼作為工作的一部分其實不算難,甚至程序員寫代碼的時間比其他事情花的更少。我就分享一下咱們Java後端開發的小體會吧:
初級程序猿大部分都是寫增刪改查的業務代碼,增刪改查最需要技術含量的是查,歸根結底都是寫SQL語句,有的業務邏輯復雜一點就SQL語句復雜一點,或者資料庫里不好處理就在Java代碼里處理。只要資料庫學的還行,MySQL比較會用,Java功底有一定基礎,基本上都能勝任敲代碼的工作。
文|熱心哥哥宇文笑
文|熱心哥哥宇文笑
業務復雜
,有的系統尤其是一些toB的系統,比如一個上市公司的超市人力管理系統,這是非常復雜的,人事組織,薪資社保,還要針對不同地區分公司不同類別的員工進行不同的代碼處理。
業務復雜
需求變動頻繁
,有些項目的顧問或者產品經理沒把控好,導致需求被客戶拖著走,搞產品的可能覺得也就變化一點點東西,實際上有的功能代碼需要後端重寫,資料庫的表結構一變,那改動也是得跟著變。咱們敲代碼的朋友最不喜歡的就是返工,我們寧願去接受更多的開發新任務也不想再去重寫自己以前寫的代碼。(不用說什麼重構,這些業務代碼重構其實並沒有什麼技術上的突破)
需求變動頻繁
代碼優化
,其實比較難得住人得,尤其是難住我們這些剛入行的程序員。有的業務數據量龐大,就得先考慮資料庫優化,代碼多線程優化,總之優化代碼倒是一件比較進階的拆事,比敲代碼難。
代碼優化
來說說,作為程序員的你,最難的什麼呢?
B. 程序=數據結構+演算法
數據結構:線性(Linear)、樹型(Tree)、圖(Graph)
演算法:排序(Sort)、查找(Search)、枚舉(Enum)等等...
演算法解決的是數據結構中的「增刪改查」,數據結構為的是讓計算機理解我們需要解決的問題是什麼東西。
一個問題,讓計算機理解它是什麼,然後我們通過『增刪改查』來達到解決問題的期望。
框架(framework)這個在2000年之前,其實計算機軟體開發當中並不怎麼使用這個詞,那個時候我們經常會說的是庫,SDK,API,例如:Win32 API,游戲開發中,我們也不叫框架,叫「引擎」,後來2000年後才逐步的開始使用這個名詞。框架實際上是利用設計模式,將某類型軟體開發中的常見問題,常用功能進行"封裝"(框架名詞與OOP關系很深)以達到更好的代碼復用率(少寫代碼),並且讓程序的設計工作以框架為主幹(骨骼)進行擴展和開發,也就是給你畫個框框,你的開發在這個框框中,框架決定你的開發模式、框架中提供的API決定了你編碼方式(介面),顫手巧所謂的框架無非是利用了所謂的23種常見「軟體設計模式」中的一些模式來組織代碼,然後讓使用框架的人,陷入這個條條框框中,按照對方給你的API來進行軟體開發。
好處就是:標准化、簡單化
壞處就是:(依賴)框架的人,嚴格來說都是程序搬磚工而已
從開發成本的角度來看,框架可以縮短我們的開發周期,但從學習的角度來看,還不如深入的去了解數茄鍵據結構與演算法以及設計模式,我們可以使用框架,但不要依賴框架。
數據結構:就是讓基本數據類型和復合數據類型以某種結構化的組織方式在計算機上進行數據的存儲,而演算法就是我們如何利用這些結構化的數據來解決實際問題方法。
計算就是一個IO設備,input -> (CPU、Memory、Storage) -> output
數據結構解決如何組織數據的輸入、數據的存儲、數據的輸出
演算法解決如何輸入、如何處理數據計算、如何輸出
數據結構與演算法是(心法),設計模式是(內薯大功),編程語言是(招式)
沒有心法,內功等於0,招式就是假把式
有了心法,內功才有依靠,有了心法和內功,招式才能產生效果!
C. 程序員剛工作時大部分都是在幹嘛
程序員剛工作的時候大部分都是在修改程序,在不停的看書、看案例,看代碼。其實還是很枯燥單調的一項工作,不過前期的這一段辛苦和枯燥的生活過後,也可以體會到程序成功的那種喜悅。
小強就是一名典型的程序員,上大學的時候學習的計算機,所以大三選擇方向的時候也是選真的程序系統方面,畢業之後就直接去了北京,因為程序員在北京很好找工作,並且福利待遇也算可以的。小強進入了一家中型企業之後,就開始了自己的程序員之路。剛開始的時候,真的挺無聊和枯燥的,簡單的工作,就是每一天都和代碼打交道,每一天都和自己的電腦為伴,整個人看上去很疲憊,但是沒有辦法,就是不停地修改程序代碼,然後結合著其他的案例,或者就是找書看代碼。
總之作為程序員的小強,在剛剛畢業的那兩年,每天的工作幾乎就是這樣的,不停地研究代碼,研究程序,針對客戶的需求來編寫代碼,接著測試、修改、再測試,每一天幾乎都是差不多的內容,但是每一天又有不一樣的地方,雖然是枯燥的,單一的,但是也很充實,有時候甚至半夜都會想起來,自己的某個程序中某些代碼不太對,還可以更優化。
小強覺得那段日子很苦、很累,沒有什麼休閑生活,也沒有幾個朋友,更沒有時間談戀愛。但是當自己看到自己編寫的代碼測試成功,自己編寫的程序可以正式上線後,那種喜悅和興奮是無法用語言來形容的,剛剛工作時候的辛勞和汗水,枯燥和無聊,好像一切都是值得的。
D. 軟體測試需要學習些什麼技能
軟體測試需要學習測試用例、測試用例的方法、缺陷管理工具、掌握資料庫、App測試、python語言、Linux系統、前端語言等技能。
1、測試用例
這是每一個工程師必備技能,也是標志你進入測試行業最低的門檻,關於測試用例可以參考我以前寫的文章。
7、python語言
python語言是現在最流行的語言,這是測試人員技能升級最好的方式之一,測試人員可以利用他做非常多的事情。
8、Linux系統
Linux系統,測試人員利用它最多的是看日誌,更好地為開發定位bug,這也是提升技能之一。
9、前端語言
前端語言,可以讓自己更好的判斷bug是前端還是後端造成的,多學一點技能對於測試人員非常好的。
E. Java程序員需要掌握哪些技術
Java程序員需要掌握哪些技術?Java的技術體系是非常龐大的,需要我們學習的技術非常多,往往很多初學的人,通過互聯網查閱了一個龐大的學習列表,然後不知道如何下手。網上很多大牛列的技術不是不重要,但是掌握住企業應用的Java的核心技術,快速上手,是一種高效的學習手段。下面匯總了一下關於Java程序員需要掌握那些技術
第一、Java程序員需要掌握哪些技術?學會一個web服務
J2EE伺服器——tomcat、Nginx、httpd等。其實要掌握的也簡單那,知道什麼文件部署在什麼地方,只要會下載,能啟動,能知道最直接、最關鍵的配置文件名字和位置就可以了。其他的伺服器的名字了解一下就足夠了。
第二、Java程序員需要掌握哪些技術?會一個框架
建議你學springMVC,因為所有的mvc框架都類似,只要堅持學習了MVC,其他的SSH、SSM等是容易借鑒的。作為一名新人在面試的時候可以說你自己擅長的,其他的框架了解一點點原理就行了,但是欠賬還是要補上的,雖然說平時用順手的框架也就那麼幾個,但是後期還要繼續學習。
第三、Java程序員需要掌握哪些技術?資料庫
mysql關系型資料庫就很好,坑淺應用多,最近連集群支持的都很好了,你只要強調一點,資料庫,你不是DBA,你還不懂如何調優,如何調執行計劃,你只懂增刪改查,所以你要學的就是T-SQL,標準是你能手寫帶條件的增刪改查,會復雜語句更好,稍微了解下sql效率方面的問題,為了面試也是可以。MSSQL在國內被鄙視的不行,如果有人叫你弄oracle,那又是太裝逼,我身邊有一票的5年+程序員,其中有超過一半連oracle的AWR都不會讀,有的連數據字典都不知道。
第四、Java程序員需要掌握哪些技術?程序方面
jdbc需要了解下,相關的有連接字的寫法,如何准備和獲取結果,什麼是resultset這類東西,當然,資料庫連接的關閉和釋放也是需要的。
類和抽象類和介面的關系搞清楚,繼承和實現搞清楚,重載重寫搞清楚這些都是基本概念。
由於Java主要是B/S結構,無論是集成還是自己的前後端,你都要看一下http,整個http的生命周期是什麼?存在哪些步驟和不同的application負責哪個階段,相關的有幾個request和response實體,包含什麼是session了解下。
業務邏輯的話,上手仔細寫幾個例子就好了
第五、Java程序員需要掌握哪些技術?IDE
你總逃不過eclipse和幾個大廠的東西。要用簡單易用的,別花太多時間在這個上面。
第六、Java程序員需要掌握哪些技術?設計模式
你要稍微看一下,了解什麼是設計模式,你大可以老實說,你根本剛入行,只是粗通工廠模式和單粒,其他的需要在工作中學習,這樣既不會顯得完全不懂,也不會出什麼紕漏。
第七、Java程序員需要掌握哪些技術?前端
前端不需要了解太多,JSP+JS就足夠了。jsp上有個容易忽視的基礎點:tag到底是什麼如何處理。jsp的生命周期這些也最好看一下。
基礎的devops稍微了解下,git的代表,github可以注冊一個賬號,搞清楚本地repo和遠程repo之間的關系即可。SVN更為簡單一點。
Maven也要學習一下,主要是pom文件的幾個主要的部分,尤其是depedency。
Java程序員需要掌握哪些技術?想要成為一名合格的Java程序員需要具備以上技術技能,並且不斷地進行學習才能獲得更好的發展。