Hello, the 'LiquidCrystal' currently provided in the arduino (1.8.15 but the same happens with previous releases) library folder is not compatible with the latest esp32 core (v4.4-dev-2313-gc69f0ec32).
Calling 'begin(16,1)' at the end of the constructor leads to an endless delay because -it seems that- the 'delayMicroseconds()' function does not work yet at that point of the initialization.
The program gets halted even before being able to output anything on the Serial.
Commenting out the 'begin(16,1)' call from the 'LiquidCrystal::init' function in 'LiquidCrystal.cpp' and placing it in the sketch (where it should be already, with proper display size) solves the issue, because the 'delayMicroseconds()' function will work.
One possible way to solve this problem without modifying the library or waiting an update, is to use a global pointer and create the LiquidCrystal object inside setup()
So instead of LiquidCrystal lcd( ... ); you do LiquidCrystal * lcd; and in setup
lcd = new LiquidCrystal( ... );
lcd->begin( ... );
You could switch to the hd44780 library and use the hd44780_pinIO i/o class.
It shouldn't have this issue and the hd44780 library is faster and has additional capabilities.
The only changes to your sketch to use it over LiquidCrystal is a change to the included header files and the class name on the constructor.
It is available in the library manager.
It includes many examples and documentation can be found in the "Documentation" sketch.