• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 20201023:算法+錯題

    標簽: 牛客Java題  leetcode  

    錯題一

    • 下列說法正確的是()
      答案及解析:C
      sychronized關鍵字和volatile關鍵字比較:
      (1)volatile關鍵字是線程同步的輕量級實現,所以volatile性能肯定比synchronized關鍵字要好。但是volatile關鍵字
      只能用于變量而synchronized關鍵字可以修飾方法以及代碼塊。
      (2)多線程訪問volatile關鍵字不會發生阻塞,而synchronized關鍵字可能會發生阻塞
      (3)volatile關鍵字能保證數據的可見性,但不能保證數據的原子性。synchronized關鍵字兩者都能保證。
      (4)volatile關鍵字主要用于解決變量在多個線程之間的可見性,而 synchronized關鍵字解決的是多個線程之間訪問資源
      的同步性。 
      

    錯題二

    • 如下的Java程序:若采用命令行“java Test one two three”調用,則程序輸出的結果為:
      public class Test { 
           public static void main(String[] args) { 
           System.out.println(args[0]); 
           } 
      } 
      ```![](https://img-blog.csdnimg.cn/img_convert/b46a40d7f77087b1b3b37794223b533a.png)
      

    答案及解析:B

    采用命令行“ java Test one two three ”調用
    其中Test為調用的方法,而one two three則為Test方法里面main函數的參數;
      System.out.println(args[0]);表示輸出第一個元素,故為one;
    

    錯題三

    • 關于依賴注入,下列選項中說法錯誤的是()
      答案及解析:B
    依賴控制和控制反轉是同一概念:
    依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。
    依賴注入是從應用程序的角度在描述,可以把依賴注入描述完整點:應用程序依賴容器創建并注入它所需要的外部資源;而控制
    反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序注入應用程序所需要的外部資源。
    

    錯題四

    • 以下代碼執行的結果是多少()?
      public class Demo {
      	public static void main(String[] args) {
      		Collection<?>[] collections = 
      {new HashSet<String>(), new ArrayList<String>(), new HashMap<String, String>().values()};
      				Super subToSuper = new Sub();
      				for(Collection<?> collection: collections) {
      	System.out.println(subToSuper.getType(collection));
      	}
      }
      	abstract static class Super {
      		public static String getType(Collection<?> collection) {
      			return “Super:collection”;
      		}
      		public static String getType(List<?> list) {
      			return “Super:list”;
      		}
      		public String getType(ArrayList<?> list) {
      			return “Super:arrayList”;
      		}
      		public static String getType(Set<?> set) {
      			return “Super:set”;
      		}
      			public String getType(HashSet<?> set) {
      				return “Super:hashSet”;
      			}
      		}
      		static class Sub extends Super {
      			public static String getType(Collection<?> collection) {
                  	return "Sub"; 
              	}
      		}
      }
      ```![](https://img-blog.csdnimg.cn/img_convert/3fb7861e829db23e53fddafc8628304f.png)
      

    答案及解析:C

    重載靜態多分派——根據傳入重載方法的參數類型,選擇更加合適的一個重載方法
    static方法不能被子類覆寫,在子類中定義了和父類完全相同的static方法,則父類的static方法被隱藏,Son.staticmethod()
    或new Son().staticmethod()都是調用的子類的static方法,如果是Father.staticmethod()或者Father f = new Son(); 
    f.staticmethod()調用的都是父類的static方法。
    此題如果都不是static方法,則最終的結果是A. 調用子類的getType,輸出collection
    

    錯題五

    • 下列代碼的運行結果為:()
      import java.io.*;
      import java.util.*;
      public class foo{
      	public static void main (String[] args){
      		String s;
      		System.out.println("s=" + s);
      	}
      }
      ```![](https://img-blog.csdnimg.cn/img_convert/14e6821f1fda57541458bdb30d7e929c.png)
      

    答案及解析:C

    局部變量可以先申明不用必須初始化,但使用到了一定要先初始化
    

    錯題六

    • 以下代碼可以使用的修飾符是:()
      public interface Status {
       /*INSERT CODE HERE*/  int MY_VALUE=10;
       }
      ```![](https://img-blog.csdnimg.cn/img_convert/8b9d253a46df7279ade72adac6ba3c18.png)
      

    答案及解析:A B D

    接口中字段的修飾符:public static final(默認不寫)
    接口中方法的修飾符:public abstract(默認不寫)
    abstract只能修飾類和方法 不能修飾字段
    

    錯題七

    • class A {}
      class B extends A {}
      class C extends A {}
      class D extends B {}
      Which four statements are true ?
      答案及解析:A C D G
    1. 只看尖括號里邊的!!明確點和范圍兩個概念
    2. 如果尖括號里的是一個類,那么尖括號里的就是一個點,比如List<A>,List<B>,List<Object>
    3. 如果尖括號里面帶有問號,那么代表一個范圍,<? extends A> 代表小于等于A的范圍,<? super A>代表大于等于A的范圍,
    4. <?>代表全部范圍
    5. 尖括號里的所有點之間互相賦值都是錯,除非是倆相同的點
    6. 尖括號小范圍賦值給大范圍,對,大范圍賦值給小范圍,錯。如果某點包含在某個范圍里,那么可以賦值,否則,不能賦值
    7. List<?>和List 是相等的,都代表最大范圍
    ----------------------------------------------------------------------------------
    7.補充:List既是點也是范圍,當表示范圍時,表示最大范圍
    
    public static void main(String[] args) {
    		List<A> a;
    		List list;
    		list = a;   //A對,因為List就是List<?>,代表最大的范圍,A只是其中的一個點,肯定被包含在內
    		List<B> b;
    		a = b;      //B錯,點之間不能相互賦值
    		List<?> qm;
    		List<Object> o;
    		qm = o;     //C對,List<?>代表最大的范圍,List<Object>只是一個點,肯定被包含在內
    		List<D> d;
    		List<? extends B> downB;
    		downB = d;  //D對,List<? extends B>代表小于等于B的范圍,List<D>是一個點,在其中
    		List<?extends A> downA;
    		a = downA;  //E錯,范圍不能賦值給點
    		a = o;      //F錯,List<Object>只是一個點
    		downA = downB;  //G對,小于等于A的范圍包含小于等于B的范圍,因為B本來就比A小,B時A的子類嘛
    }
    

    算法一

    • 請判斷一個鏈表是否為回文鏈表

      示例1:

      輸入: 1->2
      輸出: false
      

      示例2:

      輸入: 1->2->2->1
      輸出: true
      
      class Solution {
          public boolean isPalindrome(ListNode head) {
              ListNode slow = head;
              ListNode fast = head;
              if(fast==null||fast.next==null){//0個節點或者1個節點
                  return true;
              }
              while(fast.next!=null&&fast.next.next!=null){
                  fast = fast.next.next;
                  slow = slow.next;
              }
              //對鏈表后半段進行反轉
              ListNode midNode = slow;
              //后半段鏈表的第一個節點
              ListNode firNode = slow.next;
              //插入節點從第一個節點后面一個開始
              ListNode cur = firNode.next;
              //第一個節點最后會變最后一個節點
              firNode.next = null;
      
              while(cur!=null){
                  //保存下次遍歷的節點
                  ListNode nextNode =  cur.next;
                  cur.next = midNode.next;
                  midNode.next = cur;
                  cur = nextNode;
              }
      
              //反轉之后對前后半段進行比較
              slow = head;
              fast = midNode.next;
              while(fast!=null){
                  if(fast.val!=slow.val){
                      return false;
                  }
                  slow = slow.next;
                  fast = fast.next; 
              }
              return true;
          }
      }
      
    版權聲明:本文為weixin_45447369原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_45447369/article/details/109243169

    智能推薦

    易錯題

    在對數組全部元素賦初值時,不可以省略行數,但能省略列數。(F) 數組定義中,數組名后是用方括號括起來的常量表達式,不能用圓括號。(T) 函數strcmp從頭至尾順序地將其對應字符比較,遇到兩個字符不等時,兩個字符相減得到一個int型值,兩個字符串完全相同時,則返回0.(T) 指向數組元素的指針只可指向數組的首元素。 (F) 對于已正確定義的二維數組a, *(a[i]+j)與a[i][j]的含義相同...

    NowCoder錯題

    1.下面一段程序的輸出結果是?   分析:這題在不同的編譯器會有不同的結果: 第一種情況: j = (i++*i++);=>3*4  第一次i++返回3 第二次i++返回4 最后i的值為5 k = (++i*++i);=>6*7  第三次++i返回6  第四次++i 返回7 最后i的值為7  但是還有一種編譯器的分析情況是這樣 j=(i...

    20201023-第一次培訓心得

    本次培訓中學習到的新知識點有 固定導航欄的實現 flex布局實現頁面自適應窗口大小 Github上傳任務的基本步驟 固定導航欄的實現 利用css中position參數的設置可以使導航欄位置固定 top值為0使得導航欄固定在頁面頂端 width參數以百分比描述使得菜單欄可橫跨頁面 導航欄中flex布局的應用 在導航欄內部使用flex布局可使Logo和列表分居兩側 頁面主體中flex布局的應用 jus...

    C++基礎錯題

    1:以下代碼最后一次打印結果是() 最后輸出 iCount = 6 解析: 靜態局部變量的特點:1. 該變量在全局數據區分配內存;2. 靜態局部變量在程序執行到該對象的聲明處時被首次初始化,即以后的 函數調用 不再進行初始化;3. 靜態局部變量一般在聲明處初始化,如果沒有顯式初始化,會被程序自動初始化為0。 調用fun(1),icount = 2 輸出icount = 3 調用fun(2),ico...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡