復習Java的精華總結

小白和老手都應該看看的總結

輸入

java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。

下面是創建 Scanner 對象的基本語法:

Scanner s = new Scanner(System.in);

使用方法如下:

//對應類型用對應的方法接收	 
String stringx=s.next();
String stringy=s.nextLine();int intx=s.nextInt();
long longx=s.nextLong();
short shortx=s.nextShort();float floatx=s.nextFloat();
double doublex=s.nextDouble();BigInteger bigInteger=s.nextBigInteger();
BigDecimal bigDecimal=s.nextBigDecimal();

注意:

1、next和nextLine的區別:next讀取到空格停止,nextLine讀取到回車停止,讀取到空格不會停止。

2、nextInt不要和nextLine混用,如果nextLine在nextInt后面使用,會有吸收掉了本行的換行符而并沒有接收到下一行數據的問題

輸出

System是java.lang里面的一個類

out是System的靜態數據成員,而且這個成員是java.io.PrintStream類的引用

println()和print()就是java.io.PrintStream類里的方法.

被關鍵字static修飾的成員可以直接通過"類名.成員名"來引用,無需創建類的實例。所以System.out是調用了System類的靜態數據成員out。?

第一種:

System.out.println();?

是最常用的輸出語句,它會把括號里的內容轉換成字符串輸出到控制臺,并且結尾換行。

1)輸出的是一個基本數據類型,會自動轉換成字符串,

2)輸出的是一個對象,會自動調用對象的toString()方法

第二種:

System.out.print();?

和第一種一樣,只是結尾不換行。

第三種:

System.out.printf(); 

這個方法延續了C語言的輸出方式,通過格式化文本和參數列表輸出比如:

?

八種基本類型

基本數據類型的變量是存儲在棧內存中,而引用類型變量存儲在棧內存中,保存的是實際對象在堆內存中的地址。

注意:有兩個大數類:BigInteger,BigDecimal分別是整數和小數

自動裝箱: java自動將原始類型轉化為引用類型的過程,編譯器調用valueOf方法將原始類型轉化為對象類型。

自動拆箱: java自動將引用類型轉化為原始類型的過程,編譯器調用intValue(),doubleValue()這類方法將對象轉換成原始類型值

例子:

Integer a = 3; //自動裝箱
int b = a; //自動拆箱

條件分支

1)if語句中必須是一個布爾值,而不能是其他類型,這是java特殊的地方,比如判斷x是否為null不能寫if(!x)而要寫if(x==null)

2)switch 語句中的變量類型可以是: byte、short、int 、char。

從 Java SE 7 開始,switch 支持字符串 String 類型了

Switch語句和if else語句的區別

switch case會生成一個跳轉表來指示實際的case分支的地址,而if...else是需要遍歷條件分支直到命中條件

1)if-else語句更適合于對區間(范圍)的判斷,而switch語句更適合于對離散值的判斷

2)所有的switch都可以用if-else語句替換(if-else對每個離散值分別做判斷即可)

但是不是所有的if-else都可以用switch替換(因為區間里值的個數是無限的)

3)當分支較多時,用switch的效率是很高的。因為switch是確定了選擇值之后直接跳轉到那個特定的分支

switch...case占用較多的空間,因為它要生成跳表,特別是當case常量分布范圍很大但實際有效值又比較少,空間利用率很低。

?

循環流程

for( 初始化; 終止條件; 更新?) {

}

---------------------------------------------------------------

for(類型 變量名:數組或集合){

}//注意舉例:

for(int i:arr){

i=1;

}//arr數組內的值不會被改變

---------------------------------------------------------------

while(進入循環條件){

}

---------------------------------------------------------------

do{

}while(條件)

---------------------------------------------------------------

數組

靜態初始化

正確示例:

int ids[]或int[]?ids={ 1,2,3,4,5,6,7,8};

錯誤示例:

int num2[3] = {1,2,3};?// 編譯錯誤,不能在[ ]中指定數組長度

int[] num3;System.out.println(num3.length);?// 編譯錯誤,未初始化不能使用

動態初始化

正確示例:

int series[ ]= new int[4];

二維數組:

int arr[ ] [ ] = { {1,2},{3,4},{5,6}};

long[ ][ ] arr?= new long[5][5];

arrays類:

java.util.Arrays類能方便地操作數組,它提供的所有方法都是靜態的

常用方法:

–copyOf? ???????????實現數組的復制? ? ? ? ? ? ? ? ? ? ? ? ? ? ???copyOf(int[] a,int newlength);

–fill? ???????????????????實現數組元素的初始化? ? ? ? ? ? ? ? ? ???fill(int[] a,int val);

–sort? ?????????????????實現數組的排序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??sort(int[] a);

–binarySearch??? 實現排序后的數組元素查找? ? ? ? ? ???binarySearch(int[] a,int key);

面向對象的三大核心特性

封裝

保證了程序和數據不受外部干擾,不被誤用。封裝的目的在于保護信息,使用它的主要優點如下。

  • 保護信息(阻止外部隨意訪問內部代碼和數據)
  • 隱藏細節(一些不需要程序員修改和使用的信息,用戶只需要知道怎么用就可以,不需要知道內部如何運行)
  • 有利于松耦合,提高系統的獨立性。(當一個系統的實現方式發生變化時,只要它的接口不變,就不會影響其他系統的使用)
  • 提高軟件的復用率,降低成本

繼承

繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼,缺點:提高了類之間的耦合性

繼承的語法:修飾符 class 子類名 extends 父類名

1)子類擁有父類非private的屬性,方法,子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。子類可以用自己的方式實現父類的方法(重寫)。

2)Java的繼承是一個子類只能繼承一個父類,但是可以多重繼承:例如A類繼承B類,B類繼承C類,這是java繼承區別于C++繼承的一個特性。

多態

?在面向對象理論中,多態性的定義是:同一操作作用于不同的類的對象,將產生不同的執行結果

比如動物類可以指向的貓或狗,他們的“叫”方法就是不一樣的,“喵喵”和“汪汪”

好處:多態除了代碼的復用性外,還可以降低耦合、可替換性、可擴充性

多態的轉型分為向上轉型和向下轉型兩種
向上轉型:多態本身就是向上轉型過的過程
父類類型 變量名=new 子類類型();? ? ? 比如:Set<Integer> set=new HashSet<Integer>();

向下轉型:一個子類對象可以使用強制類型轉換,將父類引用類型轉為子類引用各類型
子類類型 變量名=(子類類型)?父類類型的變量;

開發中實現多態?

接口實現、抽象類、繼承父類進行方法重寫、同一個類中進行方法重載。

關鍵字?

final 關鍵字:聲明類可以把類定義為不能繼承的,比如String

super關鍵字:用于引用父類中的屬性和方法,super.屬性、super.方法()

this關鍵字:用于引用本類中的屬性和方法,this.屬性、this.方法()

權限關鍵字

?

抽象類

在繼承關系中,有時基類本身生成對象是不合情理的。

例如,動物作為一個基類可以派生出貓、狗等子類,但動物類本身生成對象明顯不合常理。

abstract修飾的類稱為抽象類。抽象類的特點:

不能實例化對象、類中可以定義抽象方法、抽象類中可以沒有抽象方法

?abstract修飾的方法稱為抽象方法,抽象方法只有聲明沒有實現,即沒有方法體。包含抽象方法的類本身必須被聲明為抽象的。

abstract class Animal {
private String color ;
public abstract  void  shout();
}

??派生類繼承抽象類必須實現抽象類中所有的抽象方法,否則派生類也必須定義為抽象類。

接口

Java中的接口是一系列方法的聲明,可以看做是特殊的抽象類,包含常量和方法的聲明,而沒有變量和方法的實現。

接口的意義:

?彌補Java中單繼承機制的不足。

?接口只有方法的定義沒有方法的實現,即都是抽象方法,這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

接口的定義語法:

interface 接口名稱 {常量抽象方法}

類可以通過實現接口的方式來具有接口中定義的功能,基本語法:

–class 類名 implements 接口名 {

–}

–一個類可以同時實現多個接口;

–一個接口可以被多個無關的類實現;

–一個類實現接口必須實現接口中所有的抽象方法,否則必須定義為抽象類。

接口繼承:

Java中接口可以繼承接口,與類的繼承概念一致,

會繼承父接口中定義的所有方法和屬性。

一個接口可以同時繼承多個接口。

接口和抽象類對比

?

參數抽象類接口
默認的方法實現可以有默認的方法實現接口完全是抽象的。不存在方法的實現
實現子類使用extends關鍵字來繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有聲明的方法的實現。子類使用關鍵字implements來實現接口。它需要提供接口中所有聲明的方法的實現
構造器抽象類可以有構造器接口不能有構造器
main方法抽象方法可以有main方法并且我們可以運行它接口沒有main方法,因此我們不能運行它。
多繼承抽象方法可以繼承一個類和實現多個接口接口只可以繼承一個或多個其它接口
速度它比接口速度要快接口稍微慢,因為需要去尋找在類中實現的方法。
添加新方法如果你往抽象類中添加新的方法,你可以給它提供默認的實現。因此你不需要改變你現在的代碼。如果你往接口中添加方法,那么你必須改變實現該接口的類。

?

異常

Java5個異常

ArrayIndexOutOfBoundsExceptions:數組下標越界

NullPointerException:訪問null的對象的方法或屬性時

ClassCastException:類型轉換失敗時

ConcurrentModificationException:并發修改異常

ArithmeticException:除零異常

處理異常:

try catch :

try catch:自己處理異常
try {可能出現異常的代碼
} catch(異常類名A e){如果出現了異常類A類型的異常,那么執行該代碼
} ...(catch可以有多個)
finally {最終肯定必須要執行的代碼(例如釋放資源的代碼)
}

注意:finally不一定執行:前面代碼遇到如:System.exit(0);? ?return 0;,就不會執行接下來的語句,包括finally。

拋出:

一個方法不處理它產生的異常,而是沿著調用層次向上傳遞,由調用它的方法來處理這些異常,叫拋出異常。

throws:使用throws關鍵字,用來方法可能拋出異常的聲明。

例如:public void doA(int a) throws Exception1,Exception3{......}

throw:使用throws關鍵字,用來拋出異常

語法:throw (異常對象);

如:throw new ArithmeticException();

?

注意事項:

?避免過大的try塊,不要把不會出現異常的代碼放到try塊里面,盡量保持一個try塊對應一個或多個異常。

?細化異常的類型,不要不管什么類型的異常都寫成Excetpion。

?不要把自己能處理的異常拋給別人。

?

自定義異常

?如果JDK提供的異常類型不能滿足需求的時候,程序員可以自定義一些異常類來描述自身程序中的異常信息。

?程序員自定義異常必須是Throwable的直接或間接子類。

?在程序中獲得異常信息一般會調用異常對象的getMessage,printStackTrace,toString方法,所以自定義異常一般會重寫以上三個方法。

public class SpecialException extends Exception {@Overridepublic String getMessage() {return "message";}@Overridepublic void printStackTrace() {System.out.println(message);}@Overridepublic String toString() {return "message";}
}

?

字符串

String

String是字符串final常量類,值一經賦值,其值不可變(指的是所指向的內存值不可修改,但可以改變指向),而且無法被繼承。

初始化

?String name= new String(“小貓”);

和創建對象過程沒有區別,創建一個新的String對象,并用name指向它。

?String sex = “女”;

過程:

  1. 先在常量池中查找“女”,如果沒有則創建對象
  2. 在棧中創建引用sex,
  3. 將sex指向對象“女”
String s1 = "abc";
//"abc"是一個對象
String s2 = new String("abc");
//這里變成兩個對象,在內存中存在兩個,包括對象“abc” 和 new 出來的對象
String s3 = "abc";  //這里的‘abc’?和s1的‘abc’是同一個對象,二者的內存地址一樣。System.out.println(s1==s2);//false
System.out.println(s1==s3);//true

部分api

字符串連接concat(String str)、“+”運算符
字符串查找indexOf (String str)、lastIndexOf(String str)、charAt(int indexOf)
字符串分割split(String  regex)
字符串比較compareTo(String str): 
忽略大小寫equalslgnoreCase(String str)
變成字符數組toCharArray()

StringBuild和 StringBuffer

因為String的值是不可變的,每次對String的操作都會生成新的String對象,這樣效率低下,大量浪費空間。

第一行:我們先棧里起名字叫cat,在堆里開辟空間,存入“小貓”,并用cat指向它

第二行:我們新開辟了一個空間,存入“小貓world”,并用cat指向它。

這個過程顯然又費時又費力。

為了應對字符串相關的操作,谷歌引入了兩個新的類:StringBuffer類和StringBuild類,它們能夠被多次的修改,并且不產生新的未使用對象。

StringBuild和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問),StringBuffer是線程安全的。(StringBuffer 中的方法大都采用了 synchronized 關鍵字進行修飾)

由于?StringBuilder 相較于 StringBuffer 有速度優勢,所以多數情況下建議使用?StringBuilder 類。

在應用程序要求線程安全的情況下,則必須使用?StringBuffer 類。

集合

map/set

每一種set有對應類型的map

HashSet(map)無序,底層哈希表+鏈表(1.8后,數量大于8后鏈表改為紅黑樹優化性能),增刪改查O(1)

TreeSet(map)有序(人規定排序的規則),底層是紅黑樹,但是增刪改查O(logN)

LinkerHashSet(map)添加一個雙向鏈表維護了插入的順序。

一般情況用HashSet(map)因為效率高

list

ArrayList,底層是數組,查詢快,增刪慢。

線程不安全,速度快

Vector, 底層是數組,查詢快,增刪慢。

線程安全,速度慢

LinkedList,底層數據結構是鏈表,查詢慢,增刪快。

線程不安全,速度快

PriorityQueue優先隊列,底層是堆。增刪改查O(logN)

API

ArrayList<Integer> list=new ArrayList<Integer>();增:add(E e):將指定的元素添加到此列表的尾部add(int index, E element):將指定的元素插入此列表中的指定位置
刪:remove(int index):移除此列表中指定位置上的元素
改:set(int index, E element):用element替換index上的數
查:get(int index):返回下標index上的元素size():返回此列表中的元素數
//map
Map<Integer, Integer> map=new HashMap<Integer, Integer>();int size()//K-V關系數量
boolean isEmpty()//是否為空
增:V put(K?key,V?value)//放入K-V鍵值對void putAll(Map<K,V> m)//放入m包含的所以鍵值對
刪:V remove(Object?key)//刪除key對應的鍵值對void clear()//刪除所有鍵值對
改:直接put,會覆蓋舊的記錄
查:boolean containsKey(Object?key)//是否包含keyboolean containsValue(Object?value)//是否包含valueV get(Object?key)//得到key對應的value
生成集合:Set<K> keySet()//返回包含所有key的setCollection<V> values()//返回包含所有value的CollectionTreeMap特有:
public K firstKey()//返回第一個key(最高)
public K lastKey()//返回最后一個key(最低)
//set,大部分和map類似
增:add 
刪:remove
查:contains

Iterator

主要功能:用于對容器的遍歷

主要方法:

boolean hasNext():判斷是否有可以元素繼續迭代

Object next():返回迭代的下一個元素

void remove():從迭代器指向的集合中移除迭代器返回的最后一個元素

例子:

Set<String> name = new HashSet<String>();
name.add("LL");
name.add("VV");
name.add("WW");
......Iterator<String> it = name.iterator();
while(it.hasNext()){String n = it.next();...
}

HashMap相關

HashMap

  • ?哈希沖突:若干Key的哈希值如果落在同一個數組下標上,將組成一條鏈,對Key的查找需要遍歷鏈上的每個元素執行equals()比較,1.8后優化為紅黑樹
  • 負載極限,“負載極限”是一個0~1的數值,“負載極限”決定了hash表的最大填滿程度。當hash表中的負載因子達到指定的“負載極限”時,hash表會自動成倍地增加容量(桶的數量),并將原有的對象重新分配,放入新的桶內,這稱為rehashing。默認當HashMap中的鍵值對達到數組大小的75%時,即會rehashing。

解釋0.75:

是時間和空間成本上的一種折中:

  • 較高的“負載極限”(也就是數組小)可以降低占用的空間,但會增加查詢數據的時間開銷
  • 較低的“負載極限”(也就是數組大)會提高查詢數據的性能,但會增加hash表所占用的內存開銷

可以根據實際情況來調整“負載極限”值。

多線程比較

HashMap

線程不安全

HashTable

線程安全,實現的方式是在修改數據時鎖住整個HashTable,效率低,ConcurrentHashMap做了相關優化

ConcurrentHashMap

線程安全,其關鍵在于使用了鎖分離技術。它使用了多個鎖來控制對hash表的不同部分進行的修改。

ConcurrentHashMap內部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的Hashtable,它們有自己的鎖。

只要多個修改操作發生在不同的段上,它們就可以并發進行。

默認將hash表分為16個桶,諸如get、put、remove等常用操作只鎖住當前需要用到的桶,讀操作大部分時候都不需要用到鎖。

(JDK1.8已經摒棄了Segment,并發控制使用Synchronized和CAS來操作,整個看起來就像是優化過且線程安全的HashMap,雖然在JDK1.8中還能看到Segment的數據結構,但是已經簡化了屬性,只是為了兼容舊版本。)

?

泛型

泛型用一個通用的數據類型T來代替類,在類實例化時指定T的類型,運行時自動編譯為本地代碼,運行效率和代碼質量都有很大提高,并且保證數據類型安全。

泛型的作用就是提高代碼的重用性,避免強制類型轉換,減少裝箱拆箱提高性能,減少錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443979.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

必須知道的python專屬騷技巧25例

本文我總結了25個python專屬騷操作&#xff0c;實屬提高效率/同事吹牛只利器&#xff0c;確定不收藏嗎&#xff1f; 一、原地交換 Python 提供了一個直觀的在一行代碼中賦值與交換&#xff08;變量值&#xff09;的方法 x, y 10, 20 print(x, y)x, y y, x print(x, y)#1 (10…

Oracle10g數據庫的完全卸載:

卸載Oracle &#xff1a; 1、停止所有Oracle服務&#xff0c;點Universal Installer卸載2、刪除注冊表中的所有關于Oracle項&#xff08;1&#xff09;在HKEY_LOCAL_MACHINE\SOFTWARE下&#xff0c;刪除Oracle目錄&#xff08;2&#xff09;在HKEY_LOCAL_MACHINE\SYSTEM\Contro…

超硬核!躺進BAT以后我總結了出現最多的15道數組題

作為一個硬核作者&#xff0c;絕不和你扯廢話&#xff0c;干貨無套路送你 題目一&#xff1a; 給定一個數組arr&#xff0c;求出需要排序的最短子數組長度 要求&#xff1a; 時間o(n),空間o(1) 思路&#xff1a; 有序的數組中&#xff0c;任意一個數字&#xff0c;一定小于左…

《關于我的那些面經》滴滴Java崗(附答案)

手撕單例模式 所謂單例&#xff0c;就是整個程序有且僅有一個實例。該類負責創建自己的對象&#xff0c;同時確保只有一個對象被創建。 在Java&#xff0c;一般常用在工具類的實現或創建對象需要消耗資源。特點&#xff1a;類構造器私有、持有自己類型的屬性、對外提供獲取實…

《關于我的那些面經》——百度后端(附答案)

作者保證&#xff0c;本系列全是純干貨真實記錄&#xff0c;絕對不是某些營銷號瞎編亂造的面試。 一、公司的簡介 百度是全球最大的中文搜索引擎&#xff0c;是中國最大的以信息和知識為核心的互聯網綜合服務公司&#xff0c;更是全球領先的人工智能平臺型公司。2000年1月1日創…

《兔兔公司的歷史》那些年,百度的榮耀和沉淪

這是全站最硬核的兔子700文章后的第一篇軟文&#xff0c;覺得喜歡的同學可以三連一波&#xff0c;如果大家喜歡&#xff0c;我會出公司的歷史系列、互聯網大佬系列、產品經理系列&#xff0c;大家喜歡哪個呢&#xff1f; 百度公司的發展趨勢 還記得南宋詞人辛棄疾的那首詞嗎&a…

這篇不討好任何人的回憶錄,記錄了我從雙非學校到BAT/TMD六offer的原因

注&#xff1a;給我想個新名字好不好呀&#xff0c;采用了直接發百元紅包&#xff01;沒別的&#xff0c;想讓大家認識兔兔rabbit&#xff0c;說一下自己的經驗教訓&#xff0c;應該會對很多人有幫助。 一、前言 在今年&#xff0c;我要畢業了&#xff0c;基本結束了大學生活&…

如何把maven項目轉成web項目

創建Web工程&#xff0c;使用eclipse ee創建maven web工程 1.右鍵項目,選擇Project Facets,點擊Convert to faceted from 2.更改Dynamic Web Module的Version為2.5.(3.0為Java7的,Tomcat6不支持). 如果提示錯誤,可能需要在Java Compiler設置Compiler compliance level 為1.6 …

《兔子的大廠面經合集》朋友面神策數據庫,第五個問題不會,直接再見(1)

這個系列計劃收集幾百份朋友和讀者的面經&#xff0c;作者合集方便查看&#xff0c;各位有面經屯著可以聯系我哦 寫數據庫還真不是人人都能干的&#xff0c;硬是一道別的題都沒問。

老師給的硬核移動端測試面試題目,大家看看靠譜嗎

以后我把各崗位的題目更新個遍&#xff0c;當然大部分都是我自己總結的保證質量哈 ADB工作原理 當用戶啟動一個adb客戶端&#xff0c;客戶端首先確認是否已有一個adb服務進程在運行。如果沒有&#xff0c;則啟動服務進程。當服務器運行&#xff0c; adb服務器就會綁定本地的TC…

兔子,撒幣

作為最硬核的你兔老大&#xff0c;我狠起來連自己都罵 一、原力第一 哈哈當然不是罵自己啦哈哈&#xff0c;其實是最近csdn出了一個活動&#xff1a;原力計劃s3&#xff0c;弄得我現在整天想著&#xff0c;給你們發錢。發書。發資料。 對&#xff0c;就是這個玩意&#xff1a…

超硬核!數據庫學霸筆記,考試/面試隨便秒殺

廢話不多說&#xff0c;上干貨是兔老大的傳統了&#xff0c;收藏就完事了。 目錄 數據庫系統概論 四個基本概念 數據模型 數據庫系統結構 數據庫系統模式的概念 數據庫系統的三級模式結構 數據庫的二級映像功能與數據的獨立性 數據庫系統的組成 關系 關系模式 關系數…

一個神奇的大學科目《軟件工程》,知識點總結+測試題,包你不掛科

誰能告訴我這科的理論在哪可以實用呀&#xff1f;搞不懂&#xff0c;只能收藏一下包不掛科 知識點總結 第一章&#xff1a; 軟件工程定義&#xff1a; 1968年10月&#xff0c;Fritz Bauer 首次提出了“軟件工程”的概念&#xff0c;并將“軟件工程”定義為&#xff1a;為了經…

Toad for Oracle9.7中導入數據庫以后,數據有中文亂碼:

昨天&#xff0c;在阿里云服務器上安裝了Oracle10g的數據庫后&#xff0c;又安裝了Toad for Oracle9.7工具&#xff0c;之后導入數據后發現數據的中文是亂碼&#xff0c;最后經過多方查找&#xff0c;終于解決了&#xff0c;現在總結一下&#xff0c;以供后來的人查看。 一&am…

騰訊面試Android必問11題,我說的,不信就來看看

眾所周知兔子啥都會那么一點&#xff0c;不收藏等著干啥呢 1、是否使用過本地廣播&#xff0c;和全局廣播有什么差別&#xff1f; 引入本地廣播的機制是為了解決安全性的問題&#xff1a; 正在發送的廣播不會脫離應用程序&#xff0c;比用擔心app的數據泄露&#xff1b;其他的…

超硬核!我統計了BAT筆試面試出現頻率最高的五道題,學會了總能碰到一道

所以說不要怕算法&#xff0c;簡單的題反而出現的頻率最高&#xff0c;不一定非要寫個幾百道才面試 兩數之和 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那 兩個 整數&#xff0c;并返回他們的數組下標。 你可以假設每種輸入只會…

不騙你,全網首創的超硬核的萬字SQL題

因為上次發了數據庫原理總結&#xff0c;瀏覽快上萬了&#xff0c;所以把我總結的題目 也送給大家 上次的數據庫原理總結 一&#xff0e;根據員工工資計算其個人所得稅&#xff0c;3000元為起征點&#xff0c;超出3000元的部分按照10%的比例征收個人所得稅&#xff0c;例如&…

學姐面了美團阿里京東的面經

很真實的經歷&#xff0c;美團阿里京東全都嘗試過。希望對你們都有幫助 近一個多月 斷斷續續參加了一些校園秋季招聘&#xff0c;仍未上岸。 記錄近段時間的反思共享。 &#xff08;時間順序&#xff09; 【美團基礎研發部門-測試開發崗(功能測試&#xff0c;測試平臺研發&a…

學姐騰訊產品面經

順利拿到sp offer&#xff0c;不服不行&#xff0c;不是這塊料呀 系列文章歷史&#xff1a; 朋友面神策數據庫&#xff0c;第五個問題不會&#xff0c;直接再見 美女學姐面了美團阿里京東&#xff0c;這些經驗實在太真實了 首先&#xff0c;來個背景介紹&#xff1a; 騰訊實…

關于阿里云服務器本地訪問不了的問題

一&#xff1a;前幾天公司購買了一臺阿里云服務器&#xff0c;讓我把之前的項目都移到阿里云服務器上&#xff0c;我為此專門的研究了一下阿里云服務器的基本操作和安裝流程&#xff0c;這里我說一下我們公司的服務器配置如下&#xff1a; 系統就配置就是這個情況&#xff0c;下…