Java面試題[轉載]

目錄html

轉載

本文轉載自原博客 ,雖然說是面試題,可是裏面的知識點都值得去掌握,我會去查證答案,不會的暫留。恰好準備辭職了,這幾天補充一下java

簡歷篇

請自我介紹

我是蜀雲泉mysql

請介紹項目

我作過XX項目程序員

基礎篇

基本功

面向對象的特徵

封裝,多態,繼承三大特色web

final, finally, finalize 的區別

final是表示不可變的,例如final一個變量,那麼這個變量的值不會變,就是常量。final一個方法,這個方法不能被子類重寫,final一個類,這個類不能被繼承。面試

finally這個是try catch捕捉異常的語句中最終執行的部分,須要注意的是,finally通常是在try和catch的return以前才執行的,這句話很重要,能夠去參考這篇文章finally在try和catch的return以前執行redis

finalize是在Object類中定義的,最主要的用途是回收特殊渠道申請的內存。Java程序有垃圾回收器,因此通常狀況下內存問題不用程序員操心。但有一種JNI(Java Native Interface)調用non-Java程序(C或C++),finalize()的工做就是回收這部分的內存。算法

int 和 Integer 有什麼區別

Integer是java爲int提供的封裝類。int的默認值爲0,而Integer的默認值爲null,即Integer能夠區分出未賦值和值爲0的區別,int則沒法表達出未賦值的狀況,例如,要想表達出沒有參加考試和考試成績爲0的區別,則只能使用Integerspring

①不管如何,Integer與new Integer不會相等。內存地址不同。
②兩個都是非new出來的Integer,若是數在-128到127之間,則是true,不然爲false,由於 java在編譯Integer i = 128的時候,被翻譯成 Integer i = Integer.valueOf(128);而valueOf()函數會對-128到127之間的數進行緩存,因此Integer a=127;Integer b=127;a==b是true的,由於都是緩存中取得數據,可是範圍以外的就不同了。sql

③兩個都是new出來的,都爲false。地址都不同了
④int和integer(不管new否)比,都爲true,由於會把Integer自動拆箱爲int再去比

重載和重寫的區別

方法重載是指同一個類中的多個方法具備相同的名字,但這些方法具備不一樣的參數列表,即參數的數量或參數類型不能徹底相同

方法重寫是存在子父類之間的,子類定義的方法與父類中的方法具備相同的方法名字,相同的參數表和相同的返回類型
注:
(1)子類中不能重寫父類中的final方法
(2)子類中必須重寫父類中的abstract方法

抽象類和接口有什麼區別

含有abstract修飾符的class即爲抽象類,abstract 類不能建立的實例對象。含有abstract方法的類必須定義爲abstract class,abstract class類中的方法沒必要是抽象的。abstract class類中定義抽象方法必須在具體(Concrete)子類中實現,因此,不能有抽象構造方法或抽象靜態方法。若是的子類沒有實現抽象父類中的全部抽象方法,那麼子類也必須定義爲abstract類型。

接口(interface)能夠說成是抽象類的一種特例,接口中的全部方法都必須是抽象的。接口中的方法定義默認爲public abstract類型,接口中的成員變量類型默認爲public static final。

下面比較一下二者的語法區別:

  1. 抽象類能夠有構造方法,接口中不能有構造方法。
  2. 抽象類中能夠有普通成員變量,接口中沒有普通成員變量
  3. 抽象類中能夠包含非抽象的普通方法,接口中的全部方法必須都是抽象的,不能有非抽象的普通方法。
  4. 抽象類中的抽象方法的訪問類型能夠是public,protected和(默認類型,雖然 eclipse下不報錯,但應該也不行),但接口中的抽象方法只能是public類型的,而且默認即爲public abstract類型。
  5. 抽象類中能夠包含靜態方法,接口中不能包含靜態方法
  6. 抽象類和接口中均可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型能夠任意,但接口中定義的變量只能是public static final類型,而且默認即爲public static final類型。
  7. 一個類能夠實現多個接口,但只能繼承一個抽象類。

說說反射的用途及實現

①、在運行時判斷任意一個對象所屬的類
②、在運行時構造任意一個類的對象
③、在運行時判斷任意一個類所具備的成員變量和方法(經過反射設置能夠調用 private)
④、在運行時調用人一個對象的方法

反射的用途

不少人都認爲反射在實際Java中開發應用中並不普遍,其實否則。
當咱們在使用 IDE(如 Eclipse\IDEA)時,當咱們輸入一個隊長或者類並向調用它的屬性和方法時,一按 (「.」)點號,編譯器就會自動列出她的屬性或方法,這裏就會用到反射。

說說自定義註解的場景及實現

HTTP 請求的 GET 與 POST 方式的區別

標準答案:

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。

  • GET產生的URL地址能夠被Bookmark,而POST不能夠。

  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

  • GET請求只能進行url編碼,而POST支持多種編碼方式。

  • GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。

  • GET請求在URL中傳送的參數是有長度限制的,而POST麼有。

  • 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。

  • GET比POST更不安全,由於參數直接暴露在URL上,因此不能用來傳遞敏感信息。

  • GET參數經過URL傳遞,POST放在Request body中。

牛逼的本質:

GET和POST是HTTP協議中的兩種發送請求的方法。

HTTP是基於TCP/IP的關於數據如何在萬維網中如何通訊的協議。

因此GET/POST都是TCP連接。

GET產生一個TCP數據包;POST產生兩個TCP數據包。

對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)

本回答參考文章,建議讀一下,寫的很是棒Get和Post的區別

Session和Cookie是幹嗎的?首先我先說一個HTTP協議,傳輸數據,咱們知道,TCP/IP能夠傳輸數據,所謂的HTTP協議,就是TCP/IP在網絡層面傳輸的一個包裝規則。因此,HTTP協議的本質就是TCP/IP

HTTP協議有一個特色:無狀態鏈接

我訪問淘寶,登陸帳戶,跳轉了頁面,我一買東西,瀏覽器告訴我,不知道你的帳戶是啥,由於HTTP訪問是無狀態的,我登陸以後,跳轉了頁面,個人登陸信息已經沒了,買東西的時候,他根本不知道上次請求是啥,也不知道個人任何信息。這怎麼行,每次請求之間必須能夠通訊,必須數據能夠共享。有3種方法可使得每次請求之間數據共享

1.url帶參數

2.Cookie

3.Session

url帶參數咱們確定不使用,這種方式會把參數顯示在url欄裏面,好嘛,個人帳戶和密碼都顯示出來了,我還有啥隱私可言。因此,HTTP無狀態協議每次請求之間的數據互通,咱們使用Session和Cookie

區別:

1.Cookie數據存儲在客戶端,Session數據存儲在服務器端

2.由於Cookie存儲在客戶端,因此不安全,有可能有Cookie欺騙,因此登陸信息,涉及到密碼的可使用Session

3.Cookie有大小限制,每一個Cookie數據不能超過4kb,不少瀏覽器限制一個網站最多保存20個Cookie

4.Cookie分爲會話層Cookie和持久層Cookie,Session的本質就是會話層Cookie,因此一但你的瀏覽器禁用了Cookie,Cookie和Session都沒法使用

5.Cookie的key-value都是String類型的,Session的key-value是String-Object類型的

更多的詳細內容,去閱讀個人博客Java Web之Cookie、Session]

session 分佈式處理

JDBC 流程

最簡單的,分爲5個步驟,賈璉欲執事

@Test
public void Con() throws Exception {

  String sql="insert SysUser values('201408090009',123,'李信','男','王者榮耀','shuyunquan@qq.com','老師')";

  //1.加載註冊Mysql驅動
Class.forName("com.mysql.cj.jdbc.Driver");
  //2.連接數據庫,獲取連接對象
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Design?serverTimezone=UTC");
  //3.建立語句對象
  Statement st=con.createStatement();
  //4.執行SQL語句
  int row=st.executeUpdate(sql);
  //5.釋放資源
  st.close();
  con.close();

}

這個是最簡單的,後面涉及到鏈接池什麼的參考個人文章Java JDBC

MVC 設計思想

equals 與 == 的區別

==判斷兩個對象的引用內存地址是否一致

equals是Object類裏面的,子類通常均可以重寫,而子類通常都重寫成了值對比

舉例:

String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2);//true


String str3 = new String("abc");
String str4 = new String ("abc");
System.out.println(str3==str4);//false
System.out.println(str3.equals(str4));//true

上面的str1和str2都是同一內存空間下的abc,因此str1和str2==是true

下面的new了兩個對象,那就開闢了兩個內存空間,str3和str4確定不==,可是equals是值比較,他倆的值都是abc,因此是true

集合

開局一張圖,剩下的全都會

List 和 Set 區別

根據神圖,咱們已經知道

1.List能夠記錄添加順序,能夠重複,Set沒有順序,不能重複

2.List能夠插入多個null元素,Set只能插入一個null

3.List和Set都實現於collection

List 和 Map 區別

只有繼承collection接口的纔算集合,因此List是集合,Map自己就是一個接口,因此Map根本就不是集合。Map就是兩個集合之間的映射關係,由key-value組成,也稱之爲鍵值對Entry ,因此Map也能夠理解爲由一個個Entry組成的,是否是有點 Set 的意思,因爲Map沒有繼承Collection接口和Iterable接口,因此Map是不能使用foreach迭代的

1.List是集合,Map不是集合

2.List有序,可重複。Map的key 不容許重複,value能夠重複

Arraylist 與 LinkedList 區別

ArrayList底層是數組

LinkedList底層是雙向鏈表

因此他們倆的區別,也就是數組和鏈表的區別

頻繁的訪問get或set,固然數組的ArrayList好一點,由於LinkedList還須要移動指針

頻繁的增長或者刪除add/delete,固然是鏈表的LinkedList比較好一點,鏈表直接更改一下指針指向就ok,數組的ArrayList還得移動數據

ArrayList 與 Vector 區別

Vector和ArrayList的關係:

1):底層算法都是基於數組.

2):ArrayList是集合框架裏提供的新的變長數組.Vector是ArrayList的前身.

3):Vector相對於ArrayList來講,線程更安全,可是性能較低.

不推薦使用Vector,用ArrayList就能夠了

HashMap 和 Hashtable和ConcurrentHashMap 的區別

這個和上面的差很少

1.都採用的是哈希表算法,底層都是數組+鏈表

2.HashMap中的key沒有順序,也不容許重複,key和value能夠爲null,初始值是16,線程不安全

3.HashTablekey和value都不能爲null,初始值是11,線程安全

4.HashTable是HashMap的前身,全部的方法都使用了synchronized,都是線程安全的,可是性能很低。

5.ConcurrentHashMap 線程也是安全的,經過把整個Map分爲N個Segment,能夠提供相同的線程安全,可是效率提高N倍,默認提高16倍。(讀操做不加鎖,因爲HashEntry的value變量是 volatile的,也能保證讀取到最新的值。)
Hashtable的synchronized是針對整張Hash表的,即每次鎖住整張表讓線程獨佔,ConcurrentHashMap容許多個修改操做併發進行,其關鍵在於使用了鎖分離技術
有些方法須要跨段,好比size()和containsValue(),它們可能須要鎖定整個表而而不只僅是某個段,這須要按順序鎖定全部段,操做完畢後,又按順序釋放全部段的鎖

總結:

HaspMap線程不安全,因此多線程的時候要本身加鎖

HashTable和ConcurrentHashMap 都是線程安全的,可是HashTable是鎖住了整張表,ConcurrentHashMap有一個Segment可重入鎖,

鎖分段技術:首先將數據分紅一段一段的存儲,而後給每一段數據配一把鎖,當一個線程佔用鎖訪問其中一個段數據的時候,其餘段的數據也能被其餘線程訪問。

ConcurrentHashMap提供了與Hashtable和SynchronizedMap不一樣的鎖機制。Hashtable中採用的鎖機制是一次鎖住整個hash表,從而在同一時刻只能由一個線程對其進行操做;而ConcurrentHashMap中則是一次鎖住一個桶。

ConcurrentHashMap默認將hash表分爲16個桶,諸如get、put、remove等經常使用操做只鎖住當前須要用到的桶。這樣,原來只能一個線程進入,如今卻能同時有16個寫線程執行,併發性能的提高是顯而易見的。

HashSet 和 HashMap 區別

1.HashMap使用鍵值對存儲,HashSet僅僅存儲數據

2.一個實現Map接口,一個實現Set接口

3.HaspMap使用put()方法存儲元素,HashSet使用add()添加元素

4.HashMap比較快,由於是使用惟一的鍵來獲取對象 HashSet較HashMap來講比較慢

HashMap 的工做原理及代碼實現

ConcurrentHashMap 的工做原理及代碼實現

線程

建立線程的方式及實現

建議去看看個人文章Java進程線程筆記

建立線程的方式有3種:

1.繼承Thread類

2.實現Runnable接口

3.匿名內部類建立線程

實現:我貼出關鍵代碼

繼承Thread類方式:

package com.StadyJava.day14Thread;

import  java.lang.Thread;

class Music extends Thread{
 
 public void run() {
     for (int i = 0; i < 50; i++) {
         System.out.println("聽音樂"+i);
     }
 }
}

public class MusicThread {
 public static void main(String[] args) {
     for (int i = 0; i < 50; i++) {
         System.out.println("打遊戲"+i);
         if (i == 10) {
             Music music=new Music();
             music.start();
         }
     }
 }
}

實現Runnable接口

package com.StadyJava.day14Thread;

import  java.lang.Runnable;

class MusicRun implements Runnable{

 public void run() {
     for (int i = 0; i < 50; i++) {
         System.out.println("聽音樂"+i);
     }
 }
}

public class MusicRunnable {
 public static void main(String[] args) {
     for (int i = 0; i < 50; i++) {
         System.out.println("打遊戲"+i);
         if (i == 10) {
             Runnable music=new MusicRun();
             Thread thread=new Thread(music);
             thread.start();
         }
     }
 }
}

匿名內部類方式,這個其實仍是上面的兩種方式,只不過匿名內部類了

package com.StadyJava.day14Thread;

import  java.lang.Runnable;

class MusicRun implements Runnable{

 public void run() {
     for (int i = 0; i < 50; i++) {
         System.out.println("聽音樂"+i);
     }
 }
}

public class MusicRunnable {
 public static void main(String[] args) {
     for (int i = 0; i < 50; i++) {
         System.out.println("打遊戲"+i);
         if (i == 10) {

             //匿名內部類的形式1,使用接口
           new Thread(new Runnable() {

               public void run() {
                   for (int i = 0; i < 50; i++) {
                       System.out.println("聽音樂"+i);
                   }
               }
           }).start();

           //匿名內部類的形式2,使用繼承類
             new Thread(){
             public void run() {
                 for (int i = 0; i < 50; i++) {
                     System.out.println("聽音樂"+i);
                 }
             }
         }.start();
         }
     }
 }
}

繼承Thread類建立線程方式:

  1. Java中類是單繼承的,若是使用了繼承Thread類建立線程,那麼就 不能再有其餘父類了,這是一個限制
  2. 從操做上來講,繼承Thread類的方式更簡單,獲取線程名稱也簡單,直接getName就行了。操做簡單,這是優勢
  3. 從多線程共享資源的方面分析,繼承方式不行,直接3我的,每一個人50個蘋果,沒有實現共享,這是缺點

實現Runnable接口建立線程方式:

  1. Java中類是能夠實現多接口的,因此實現Runnable接口建立線程,也能夠繼續的去實現其餘接口,也能夠去繼承類,設計優雅,這是優勢
  2. 從操做上分析,實現接口方式有點複雜,獲取線程名稱的時候,必須使用Thread.currentThread()來獲取當前線程的引用
  3. 從多線程共享資源的方面上,實現接口方式能夠作到共享資源,3我的去吃50個蘋果,共享資源。這是優勢

綜合上面的區別對比,咱們的這個比賽。看來只能使用實現Runnable接口建立線程的方式來實現了。推薦之後建立線程,都使用實現Runnable接口的方式。

sleep() 、join()、yield()有什麼區別

sleep()是線程休眠的意思,方法須要指定等待的時間,須要try catch捕捉異常,例如 Thread.sleep(1000); 線程休眠1秒,sleep方法在休眠的時候,是牢牢的抓住同步鎖不鬆手的,多用於來模擬網絡延遲

join()線程是聯合線程的意思,用處是A線程和B線程一塊兒運行,A必須拿到B的一個結果才能夠執行,這個時候就能夠B.join(),此時A線程就會等待B線程執行完畢再執行

yield()這個是禮讓線程的方法,和sleep()有點像

這個yield方法和sleep方法的區別以下:

1.均可以使得當前處於運行狀態的線程放棄執行的機會,讓給其它線程

2.sleep方法會讓給其它線程,隨機的讓。yield方法會讓給那些優先級高的線程。

3.調用sleep方法後,線程會進入計時等待狀態。調用yield方法後,線程會進入就緒狀態。

說說 CountDownLatch 原理

如下均可以參考這篇文章:CountDownLatch、CyclicBarrier和 Semaphore

CountDownLatch類位於java.util.concurrent包下,利用它能夠實現相似計數器的功能。好比有一個任務A,它要等待其餘4個任務執行完畢以後才能執行,此時就能夠利用CountDownLatch來實現這種功能了。

CountDownLatch類只提供了一個構造器:

public CountDownLatch(int count) {  };  //參數count爲計數值

而後下面這3個方法是CountDownLatch類中最重要的方法:

public void await() throws InterruptedException { };   //調用await()方法的線程會被掛起,它會等待直到count值爲0才繼續執行
public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //和await()相似,只不過等待必定的時間後count值還沒變爲0的話就會繼續執行
public void countDown() { };  //將count值減1

下面看一個例子你們就清楚CountDownLatch的用法了:

public class Test {
     public static void main(String[] args) {   
         final CountDownLatch latch = new CountDownLatch(2);
 
         new Thread(){
             public void run() {
                 try {
                     System.out.println("子線程"+Thread.currentThread().getName()+"正在執行");
                    Thread.sleep(3000);
                    System.out.println("子線程"+Thread.currentThread().getName()+"執行完畢");
                    latch.countDown();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
             };
         }.start();
 
         new Thread(){
             public void run() {
                 try {
                     System.out.println("子線程"+Thread.currentThread().getName()+"正在執行");
                     Thread.sleep(3000);
                     System.out.println("子線程"+Thread.currentThread().getName()+"執行完畢");
                     latch.countDown();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
             };
         }.start();
 
         try {
             System.out.println("等待2個子線程執行完畢...");
            latch.await();
            System.out.println("2個子線程已經執行完畢");
            System.out.println("繼續執行主線程");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
     }
}

執行結果:

線程Thread-0正在執行
線程Thread-1正在執行
等待2個子線程執行完畢...
線程Thread-0執行完畢
線程Thread-1執行完畢
2個子線程已經執行完畢
繼續執行主線程

說說 CyclicBarrier 原理

說說 Semaphore 原理

說說 Exchanger 原理

說說 CountDownLatch 與 CyclicBarrier 區別

ThreadLocal 原理分析

講講線程池的實現原理

線程池的幾種方式與使用場景

線程的生命週期

鎖機制

說說線程安全問題

volatile 實現原理

synchronize 實現原理

synchronized 與 lock 的區別

CAS 樂觀鎖

ABA 問題

樂觀鎖的業務場景及實現方式

核心篇

數據存儲

MySQL 索引使用的注意事項

說說反模式設計]

說說分庫與分表設計

分庫與分錶帶來的分佈式困境與應對之策

說說 SQL 優化之道

MySQL 遇到的死鎖問題

存儲引擎的 InnoDB 與 MyISAM

數據庫索引的原理

爲何要用 B###tree

彙集索引與非彙集索引的區別

limit 20000 加載很慢怎麼解決

選擇合適的分佈式主鍵方案

選擇合適的數據存儲方案

ObjectId 規則

聊聊 MongoDB 使用場景

倒排索引

聊聊 ElasticSearch 使用場景

緩存使用

Redis 有哪些類型

Redis 內部結構

Redis 內存淘汰機制

聊聊 Redis 使用場景

Redis 持久化機制

Redis 集羣方案與實現

Redis 爲何是單線程的

緩存崩潰

緩存降級

使用緩存的合理性問題

消息隊列

消息隊列的使用場景

消息的重發補償解決思路

消息的冪等性解決思路(已解答,待補充)

消息的堆積解決思路

本身如何實現消息隊列

如何保證消息的有序性

框架篇

Spring

BeanFactory 和 ApplicationContext 有什麼區別

Spring Bean 的生命週期

Spring IOC 如何實現

說說 Spring AOP

Spring AOP 實現原理

動態代理(cglib 與 JDK)

Spring 事務實現方式

Spring 事務底層原理

如何自定義註解實現功能

Spring MVC 運行流程

Spring MVC 啓動流程

Spring 的單例實現原理

Spring 框架中用到了哪些設計模式

Spring 其餘產品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)

Netty

爲何選擇 Netty

說說業務中,Netty 的使用場景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

什麼是TCP 粘包/拆包

TCP粘包/拆包的解決辦法

Netty 線程模型

說說 Netty 的零拷貝

Netty 內部執行流程

Netty 重連實現

微服務篇

微服務

先後端分離是如何作的

如何解決跨域

微服務哪些框架

你怎麼理解 RPC 框架

說說 RPC 的實現原理

說說 Dubbo 的實現原理

你怎麼理解 RESTful

說說如何設計一個良好的 API

如何理解 RESTful API 的冪等性

如何保證接口的冪等性

說說 CAP 定理、 BASE 理論

怎麼考慮數據一致性問題

說說最終一致性的實現方案

你怎麼看待微服務

微服務與 SOA 的區別

如何拆分服務

微服務如何進行數據庫管理

如何應對微服務的鏈式調用異常

對於快速追蹤與定位問題

微服務的安全

分佈式

談談業務中使用分佈式的場景

Session 分佈式方案

分佈式鎖的場景

分佈是鎖的實現方案

分佈式事務

集羣與負載均衡的算法與實現

說說分庫與分表設計

分庫與分錶帶來的分佈式困境與應對之策

安全問題

安全要素與 STRIDE 威脅

防範常見的 Web 攻擊

服務端通訊安全攻防

HTTPS 原理剖析

HTTPS 降級攻擊

受權與認證

基於角色的訪問控制

基於數據的訪問控制

性能優化

性能指標有哪些

如何發現性能瓶頸

性能調優的常見手段

說說你在項目中如何進行性能調優

工程篇

需求分析

你如何對需求原型進行理解和拆分

說說你對功能性需求的理解

說說你對非功能性需求的理解

你針對產品提出哪些交互和改進意見

你如何理解用戶痛點

設計能力

說說你在項目中使用過的 UML 圖

你如何考慮組件化

你如何考慮服務化

你如何進行領域建模

你如何劃分領域邊界

說說你項目中的領域建模

說說概要設計

設計模式

你項目中有使用哪些設計模式

說說經常使用開源框架中設計模式使用分析

說說你對設計原則的理解

23種設計模式的設計理念

設計模式之間的異同,例如策略模式與狀態模式的區別

設計模式之間的結合,例如策略模式+簡單工廠模式的實踐

設計模式的性能,例如單例模式哪一種性能更好。

業務工程

你係統中的先後端分離是如何作的

說說你的開發流程

你和團隊是如何溝通的

你如何進行代碼評審

說說你對技術與業務的理解

說說你在項目中常常遇到的 Exception

說說你在項目中遇到感受最難Bug,怎麼解決的

說說你在項目中遇到印象最深困難,怎麼解決的

你以爲大家項目還有哪些不足的地方

你是否遇到過 CPU 100% ,如何排查與解決

你是否遇到過 內存 OOM ,如何排查與解決

說說你對敏捷開發的實踐

說說你對開發運維的實踐

介紹下工做中的一個對本身最有價值的項目,以及在這個過程當中的角色

軟實力

說說你的亮點

說說你最近在看什麼書

說說你以爲最有意義的技術書籍

說說我的發展方向方面的思考

說說你認爲的服務端開發工程師應該具有哪些能力

說說你認爲的架構師是什麼樣的,架構師主要作什麼

說說你所理解的技術專家

HR 篇

你爲何離開以前的公司

你爲何要進咱們公司

說說職業規劃

但願成爲技術骨幹,目前暫定Java和大數據處理方向

你如何看待加班問題

有沒有加班費?

談一談你的一次失敗經歷

你以爲你最大的優勢是什麼

你以爲你最大的缺點是什麼

你在工做之餘作什麼事情

你爲何認爲你適合這個職位

你以爲本身那方面能力最急需提升

你來咱們公司最但願獲得什麼

你但願從這份工做中得到什麼

你對如今應聘的職位有什麼瞭解

您還有什麼想問的

你怎麼看待本身的職涯

談談你的家庭狀況

你有什麼業餘愛好

你計劃在公司工做多久

相關文章
相關標籤/搜索