Scala常見面試題

Scala語言的特點

  • 集成面向對象和函數式編程

val、var、def、lazy val的區別

  • var 變量值可變,變量類型不可變
  • val 常量聲明關鍵字
  • def 關鍵字用於創建方法
  • lazy val 需要計算時才使用,避免重複計算

trait與 abstract class的區別

  • trait類似於Java中的接口,使用extends,但是要繼承多個時,使用with
  • abstract class僅一個extends,且可以爲帶有參數的構造函數

object與class的區別

  • object是類的單例對象,無需new來生成對象,如果類的名稱與對象名稱相同,則稱爲該類的伴生對象

說說case class

  • 自動添加與類名一致的構造函數,即伴生對象,通過apply實現
  • 樣本中的參數默認爲val類型
  • 默認實現hashcode、toString、equals、copy等方法

Nil、Null、None、Nothing的區別

  • Null是一個trait,null是它唯一的實例
  • Nothing也是一個trait,沒子類型,也沒實例
  • Nil表示List的空類型
  • None是Option的一個選項,表示空值;Option的另外一個選項是Some

Unit類型

Unit相當於Java中的void

什麼是柯里化函數

  • 一個接收多個參數的函數轉化爲接收其中幾個參數的函數,並返回函數
  • 優點:提高了主函數的封閉性,提高功能上的可擴張性與靈活性

什麼是閉包

  • 閉包是一個函數,返回值依賴聲明在函數外部的一個或者多個變量,實質就是代碼用到的非局部變量的混合

implicit

  • 作用:隱式參數、類型加強、隱式轉換
  • implicit 的具體應用
  • 缺點:implicit關鍵字只能用來修飾方法、變量
  • 優點:隱式轉換函數名可以是任意的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章